Compare commits

...

17 Commits

Author SHA1 Message Date
7cd7d746e7 Updated Hypr, Yazi 2025-10-17 02:05:03 +02:00
e20f8b6ea2 Nvim config update 2024-10-20 18:22:16 +02:00
36caf27d21 Changed hyprland windowrule 2024-09-08 05:12:04 +02:00
239cb292a8 Minor changes 2024-09-07 19:43:53 +02:00
ee405d9008 Added zoxide 2024-07-19 20:46:26 +02:00
2ee4e44788 Changed hyprland keybinds 2024-07-13 15:36:32 +02:00
365a2d6ac3 Added packages, fixed hypr conf 2024-07-13 15:34:04 +02:00
993af4e26c Changed hyprland config 2024-06-22 17:00:49 +02:00
fb76c95d1f Edited nvim 2024-06-05 22:47:26 +02:00
c29c755c14 Added bash editor env var 2024-06-02 18:53:52 +02:00
30df2d5faf Fixed set shell 2024-06-02 18:40:41 +02:00
896900392b Added qt5ct 2024-06-02 18:19:46 +02:00
7676943e69 Chnaged AGS config 2024-04-17 23:02:37 +02:00
8aa6bcd5cb Added ags
TODO copy ags config
2024-04-16 00:28:26 +02:00
be8fbb5d9f Removed breeze cursor, fixed gtk settings 2024-04-14 22:50:01 +02:00
d46e7c8dad Fixed bugs
Added paru installation
Switchted to hyprlock
2024-04-10 22:22:50 +02:00
b39e579c51 Fixed install script 2024-04-02 01:57:27 +02:00
66 changed files with 1310 additions and 448 deletions

View File

@@ -24,15 +24,21 @@ Example: Only execute alacritty and fish
```
# Settings
There are two ways to set settings.
There are two ways to set settings/values.
1. Create/Edit: `$HOME/.config/dotfiles/values.yml`
2. Edit: `$HOME/.dotfiles/group_vars/all`
## Install Option
The variable `system` has three valid options.
1. server: Minimal installation, only install and configure CMD tools
2. desktop (default): Install WM and desktop applications
3. desktop_full: Install additional packages for the desktop (wine)
## Ansible Vault
Vault password file: `$HOME/.config/dotfiles/vault-password.txt`
## Settings
### System
|Value |Desc |Default|
|------------|-------------------------------------------------------|-------|
|server |Minimal installation (CMD tools) | |
|desktop |Install WM and desktop applications |x |
|desktop_full|Install additional packages for the desktop (e.g. wine)| |
<br/>
# TODO
- AGS: Bar, AppLauncher, PowerMenu, Notifications, Calculator, Emoji-Picker, ...

View File

@@ -13,7 +13,18 @@ desktop_roles:
- hypr
- kvantum
- minegrub
- nwg-look
- qt5ct
- sddm
- swaylock
- wakatime
system: desktop
wakapi_key: !vault |
$ANSIBLE_VAULT;1.1;AES256
39346164353734613634356635383464636463373437333463616530346162303666343962383364
3862316162646639353665336530613965663437316263310a646464663038346539393039666537
32636139616239643934353135656662376262356433616635343830646164363435353739343966
6233303036393538370a656564643033383334323631663631336137346161326464373364346230
64323564663534393766356166393363376237633565316363363138373033353030373139366365
6435323438633233363166626330633164346534363335666433

View File

@@ -19,38 +19,62 @@ print_header() {
cmd() {
local DOTFILES_LOG="./error.log"
if ! [[ -f $DOTFILES_LOG ]]; then
touch $DOTFILES_LOG
fi
if eval "$1" 1> /dev/null 2> $DOTFILES_LOG; then
rm "$DOTFILES_LOG"
return 0
fi
echo -e "${RED}"
cat $DOTFILES_LOG
echo -e "${COLOR_RESET}"
rm "$DOTFILES_LOG"
exit 1
}
paru_install() {
if [ -x "$(command -v paru)" ]; then
return
fi
# Install Base-Devel
if [ -z "$(pacman -Q | grep base-devel)" ]; then
print_header "Installing base-devel"
cmd "sudo pacman -S base-devel --noconfirm"
fi
# Install RustUp
if ! [ -x "$(command -v rustup)" ]; then
print_header "Installing rustup"
cmd "sudo pacman -S rustup --noconfirm"
cmd "rustup default stable"
fi
# Instal Paru
FOLDER=$(mktemp -d)
print_header "Installing paru"
cmd "git clone https://aur.archlinux.org/paru.git $FOLDER"
cd $FOLDER
cmd "makepkg -si --noconfirm"
}
arch_install() {
# Install Ansible
if ! [ -x "$(command -v ansible)" ]; then
print_header "Installing ansible"
cmd "pacman -S ansible --noconfirm"
cmd "sudo pacman -S ansible --noconfirm"
fi
# Install Git
if ! [ -x "$(command -v git)" ]; then
print_header "Installing git"
cmd "sudo pacman -S git --noconfirm"
fi
# Installl Paru
paru_install
# Install PIP
if ! [ -x "$(command -v pip)" ]; then
print_header "Installing pip"
cmd "sudo pacman -S python-pip --noconfirm"
fi
# Install Watchdog
if [ -x "$(pip list | grep watchdog)" ]; then
if [ -z "$(pip list | grep watchdog)" ]; then
print_header "Installing watchdog"
cmd "pip install --break-system-packages watchdog"
fi

View File

@@ -3,6 +3,18 @@
hosts: localhost
connection: local
tasks:
- name: Get username
command: whoami
register: whoami
tags:
- always
- name: Set username
set_fact:
username: "{{ whoami.stdout }}"
tags:
- always
- name: Set default roles
set_fact:
roles: "{{ ansible_run_tags != ['all'] and ansible_run_tags or default_roles | difference(ansible_skip_tags | default([])) }}"

View File

@@ -1,48 +0,0 @@
const systemtray = await Service.import('systemtray')
/** @param {import('types/service/systemtray').TrayItem} item */
const SysTrayItem = item => Widget.Button({
child: Widget.Icon().bind('icon', item, 'icon'),
tooltipMarkup: item.bind('tooltip_markup'),
onPrimaryClick: (_, event) => item.activate(event),
onSecondaryClick: (_, event) => item.openMenu(event),
});
function SysTray() {
return Widget.Box({ children: systemtray.bind('items').transform(i => i.map(SysTrayItem)) });
}
function Bar(monitor = 0) {
const lTime = Widget.Label({
label: 'TIME',
});
Utils.interval(1000, () => {
lTime.label = Utils.exec('date +%H:%M');
//date +%d.%m.%Y
});
const bTimeDate = Widget.Box({
children: [lTime]
});
const bInfo = Widget.Box({
hpack: "end",
children: [SysTray()]
});
return Widget.Window({
monitor,
exclusivity: 'exclusive',
name: `bar ${monitor}`,
anchor: ['top', 'left', 'right'],
child: Widget.CenterBox({
centerWidget: bTimeDate,
endWidget: bInfo,
}),
});
}
export default {
windows: [Bar(1), Bar(2)]
};

View File

@@ -1,19 +0,0 @@
---
- name: "[AGS] Install"
kewlfft.aur.aur:
name:
- aylurs-gtk-shell-git
use: paru
state: present
become: true
- name: "[AGS] Create config folder"
ansible.builtin.file:
mode: "0755"
path: "{{ ansible_user_dir }}/.config/ags"
state: directory
- name: "[AGS] Configure"
ansible.builtin.copy:
src: "./"
dest: "{{ ansible_user_dir }}/.config/ags"

View File

@@ -4,9 +4,7 @@
name:
- alacritty
- ueberzugpp
use: paru
state: present
become: true
- name: "[Alacritty] Create config folder"
ansible.builtin.file:
@@ -18,3 +16,7 @@
ansible.builtin.copy:
src: "./"
dest: "{{ ansible_user_dir }}/.config/alacritty"
- name: "[Alacritty] Set default"
shell: gsettings set org.cinnamon.desktop.default-applications.terminal exec alacritty && gsettings set org.gnome.desktop.default-applications.terminal exec alacritty
ignore_errors: true

View File

@@ -1,8 +1,25 @@
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
# Env vars
export EDITOR=nvim
export VISUAL=nvim
# Load starship prompt if starship is installed
eval "$(starship init bash)"
if [ -f /usr/bin/starship ]; then
eval "$(starship init bash)"
fi
## Functions
# Yazi
function ya() {
local tmp="$(mktemp -t "yazi-cwd.XXXXX")"
yazi "$@" --cwd-file="$tmp"
if cwd="$(cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
cd -- "$cwd"
fi
rm -f -- "$tmp"
}
## Aliases
# Replace ls with eza
@@ -13,17 +30,22 @@ alias lt='eza -aT --color=always --group-directories-first' # tree listing
alias l.='eza -ald --color=always --group-directories-first .*' # show only dotfiles
# Replace cat with bat
alias cat='bat --style header --style snip --style changes --style header'
if [ -f /usr/bin/bat ]; then
alias cat='bat --style header --style snip --style changes --style header'
fi
# Replace yay with paru
[ ! -x /usr/bin/yay ] && [ -x /usr/bin/paru ] && alias yay='paru'
if [ -f /usr/bin/paru ]; then
alias yay='paru'
fi
# Aliases
alias :q='exit'
alias cls='clear'
alias dir='dir --color=auto'
alias egrep='grep -E --color=auto'
alias fgrep='grep -F --color=auto'
alias igrep='grep -i --color=auto'
alias grepe='grep -E --color=auto'
alias grepf='grep -F --color=auto'
alias grepi='grep -i --color=auto'
alias fixpacman="sudo rm /var/lib/pacman/db.lck"
alias grep='grep --color=auto'
alias grubup="sudo update-grub"
@@ -33,8 +55,6 @@ alias psmem='ps auxf | sort -nr -k 4'
alias rmpkg="sudo pacman -Rdd"
alias tarnow='tar -acf '
alias untar='tar -zxvf '
alias upd='/usr/bin/update'
alias vdir='vdir --color=auto'
alias wget='wget -c '
# Cleanup orphaned packages

View File

@@ -1,26 +1,62 @@
{
"windowStyle": "native",
"channel": "stable",
"armcordCSP": true,
"minimizeToTray": true,
"keybinds": [],
"alternativePaste": false,
"multiInstance": false,
"mods": "none",
"spellcheck": true,
"performanceMode": "none",
"skipSplash": false,
"inviteWebsocket": true,
"startMinimized": false,
"dynamicIcon": false,
"tray": true,
"customJsBundle": "https://armcord.app/placeholder.js",
"customCssBundle": "https://armcord.app/placeholder.css",
"disableAutogain": false,
"useLegacyCapturer": false,
"mobileMode": false,
"trayIcon": "default",
"doneSetup": true,
"clientName": "ArmCord",
"customIcon": "/usr/lib/armcord/app.asar/assets/desktop.png"
"windowStyle": "native",
"channel": "stable",
"armcordCSP": true,
"minimizeToTray": false,
"keybinds": [],
"alternativePaste": false,
"multiInstance": false,
"mods": [
"none"
],
"spellcheck": true,
"performanceMode": "none",
"skipSplash": false,
"inviteWebsocket": true,
"startMinimized": false,
"dynamicIcon": false,
"tray": "dynamic",
"customJsBundle": "https://armcord.app/placeholder.js",
"customCssBundle": "https://armcord.app/placeholder.css",
"disableAutogain": false,
"useLegacyCapturer": false,
"mobileMode": false,
"trayIcon": "dynamic",
"doneSetup": true,
"clientName": "ArmCord",
"customIcon": "/usr/lib/armcord/app.asar/assets/desktop.png",
"modCache": {
"shelter": "1b35b8802a85809742af99f454bb941f56f759a3"
},
"hardwareAcceleration": true,
"audio": {
"workaround": false,
"deviceSelect": true,
"granularSelect": true,
"ignoreVirtual": false,
"ignoreDevices": false,
"ignoreInputMedia": false,
"onlySpeakers": false,
"onlyDefaultSpeakers": true,
"loopbackType": "loopback"
},
"transparency": "none",
"legcordCSP": true,
"bounceOnPing": false,
"disableHttpCache": false,
"autoHideMenuBar": true,
"blockPowerSavingInVoiceChat": false,
"useMacSystemPicker": true,
"popoutPiP": false,
"spellcheckLanguage": [
"en-US",
"de-DE"
],
"sleepInBackground": false,
"noBundleUpdates": false,
"additionalArguments": "",
"smoothScroll": true,
"autoScroll": false,
"useSystemCssEditor": false,
"overlayButtonColor": "#121214"
}

View File

@@ -1 +1,13 @@
{"theme":"src.css","name":"Catppuccin Macchiato","author":"winston#0001","authorId":"505490445468696576","version":"0.2.0","description":"🎮 Soothing pastel theme for Discord","website":"https://github.com/catppuccin/discord","invite":"r6Mdz5dpFc","updateSrc":"https://raw.githubusercontent.com/catppuccin/discord/main/themes/macchiato.theme.css","supportsArmCordTitlebar":false}
{
"theme": "src.css",
"name": "Catppuccin Macchiato",
"author": "winston#0001",
"authorId": "505490445468696576",
"version": "0.2.0",
"description": "🎮 Soothing pastel theme for Discord",
"website": "https://github.com/catppuccin/discord",
"invite": "r6Mdz5dpFc",
"updateSrc": "https://raw.githubusercontent.com/catppuccin/discord/main/themes/macchiato.theme.css",
"supportsArmCordTitlebar": false,
"enabled": true
}

View File

@@ -2,18 +2,17 @@
- name: "[Discord] Install"
kewlfft.aur.aur:
name:
- armcord
use: paru
- legcord
state: present
- name: "[Discord] Create config folder"
ansible.builtin.file:
mode: "0755"
path: "{{ ansible_user_dir }}/.config/ArmCord"
path: "{{ ansible_user_dir }}/.config/legcord"
state: directory
force: false
- name: "[Discord] Configure"
ansible.builtin.copy:
src: "./"
dest: "{{ ansible_user_dir }}/.config/ArmCord"
dest: "{{ ansible_user_dir }}/.config/legcord"

39
roles/fish/files/config.fish Executable file → Normal file
View File

@@ -6,14 +6,14 @@ set -x MANROFFOPT "-c"
set -x MANPAGER "sh -c 'col -bx | bat -l man -p'"
## Environment setup
# Env vars
export EDITOR=nvim
export VISUAL=nvim
if test -f ~/.fish_profile
source ~/.fish_profile
end
# Other env vars
export EDITOR=nvim
export VISUAL=nvim
# Add ~/.local/bin to PATH
if test -d ~/.local/bin
if not contains -- ~/.local/bin $PATH
@@ -21,7 +21,7 @@ if test -d ~/.local/bin
end
end
# Plugin configuration
## Plugin configuration
# Set settings for https://github.com/franciscolourenco/done
set -U __done_min_cmd_duration 10000
set -U __done_notification_urgency_level low
@@ -31,6 +31,11 @@ if type -q starship && status --is-interactive
starship init fish | source
end
# Zoxide
if type -q zoxide && status --is-interactive
zoxide init fish | source
end
## Functions
# Fish command history
function history
@@ -113,7 +118,7 @@ function ya
set tmp (mktemp -t "yazi-cwd.XXXXX")
yazi $argv --cwd-file="$tmp"
if set cwd (cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
cd -- "$cwd"
cd "$cwd"
end
rm -f -- "$tmp"
end
@@ -133,6 +138,16 @@ if type -q bat
alias cat='bat --style header --style snip --style changes --style header'
end
# Replace yay with paru
if type -q paru
alias yay='paru'
end
# Replace cd with zoxide
if type -q zoxide
alias cd='z'
end
# Common use
alias :q=exit
alias ipn='ip'
@@ -140,6 +155,7 @@ alias nano=nvim
alias cls='clear'
alias please='sudo'
alias ip='ip -color'
alias wip=curl https://ipinfo.io/ip
alias mkdirs='mkdir --parents'
alias grubup="sudo update-grub"
alias fixpacman="sudo rm /var/lib/pacman/db.lck"
@@ -154,15 +170,16 @@ alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias grep='grep --color=auto'
alias fgrep='grep -F --color=auto'
alias egrep='grep -E --color=auto'
alias igrep='grep -i --color=auto'
alias grepf='grep -F --color=auto'
alias grepe='grep -E --color=auto'
alias grepi='grep -i --color=auto'
alias hw='hwinfo --short' # Hardware Info
alias bigpkg="expac -H M '%m\t%n' | sort -h | nl" # Sort installed packages according to size in MB
alias gitpkg='pacman -Q | grep -i "\-git" | wc -l' # List amount of -git packages
alias cleanup='sudo pacman -Rns (pacman -Qtdq)' # Cleanup orphaned packages
alias jctl="journalctl -p 3 -xb" # Get the error messages from journalctl
alias rip="expac --timefmt='%Y-%m-%d %T' '%l\t%n %v' | sort | tail -200 | nl" # Recent installed packages
alias h="cliphist list | fzf | cliphist decode | wl-copy"
# Get fastest mirrors
alias mirror="sudo reflector -f 30 -l 30 --number 10 --verbose --save /etc/pacman.d/mirrorlist"
@@ -170,11 +187,9 @@ alias mirrord="sudo reflector --latest 50 --number 20 --sort delay --save /etc/p
alias mirrors="sudo reflector --latest 50 --number 20 --sort score --save /etc/pacman.d/mirrorlist"
alias mirrora="sudo reflector --latest 50 --number 20 --sort age --save /etc/pacman.d/mirrorlist"
## Run fastfetch if session is interactive
## Run fastfetch
if status --is-interactive
if type -q fastfetch
fastfetch -l arch
else if type -q neofetch
neofetch --ascii_distro arch
end
end

View File

@@ -5,7 +5,7 @@
- fish
- fish-done
- fastfetch
use: paru
- zoxide
state: present
- name: "[Fish] Create config folder"
@@ -18,3 +18,9 @@
ansible.builtin.copy:
src: "./"
dest: "{{ ansible_user_dir }}/.config/fish"
- name: "[Fish] Set shell"
ansible.builtin.shell:
cmd: "sudo usermod -s $(which fish) {{ username }}"
become: true
ignore_errors: true

0
roles/hypr/files/devices.conf Normal file → Executable file
View File

View File

@@ -1,12 +1,9 @@
# Environment
env = XCURSOR_SIZE,24
env = XCURSOR_THEME,Breeze
env = HYPRCURSOR_SIZE,24
env = HYPRCURSOR_THEME,rose-pine-hyprcursor
env = XDG_SESSION_TYPE,wayland
env = WLR_NO_HARDWARE_CURSORS,1
env = QT_QPA_PLATFORMTHEME,qt5ct
#env = QT_QPA_PLATFORM,wayland
env = QT_STYLE_OVERRIDE,kvantum
# Minecraft
env = __GL_THREADED_OPTIMIZATIONS,0
env = QT_QPA_PLATFORMTHEME,gtk3
env = QT_STYLE_OVERRIDE,qt5ct

17
roles/hypr/files/hyprland.conf Normal file → Executable file
View File

@@ -18,7 +18,7 @@ source = ~/.config/hypr/devices.conf
# Input
input {
kb_layout = de
kb_layout = us
numlock_by_default = 1
follow_mouse = 1
@@ -54,11 +54,6 @@ decoration {
blurls = rofi
blurls = gtk-layer-shell
}
drop_shadow = yes
shadow_range = 4
shadow_render_power = 3
col.shadow = rgba(1a1a1aee)
}
# Animations
@@ -81,16 +76,6 @@ dwindle {
preserve_split = yes
}
# Master
master {
new_is_master = true
}
# Gestures
gestures {
workspace_swipe = on
}
# Misc
misc {
#mouse_move_enables_dpms = true

View File

@@ -7,16 +7,14 @@ bind = $mainMod, DELETE, exit,
bind = $mainMod, C, killactive,
bind = $mainMod, M, fullscreen,
bind = $mainMod, S, togglesplit,
bind = $mainMod, F4, exec, wlogout
bind = $mainMod, F, togglefloating,
bind = $mainMod, N, exec, swaync-client -t -sw
bind = $mainMod SHIFT, P, exec, hyprpicker -n -a -r
bind = $mainMod, O, exec, ~/.config/hypr/scripts/lock.sh
bind = $mainMod, B, exec, ~/.config/hypr/scripts/game_mode.sh
bind = $mainMod, V, exec, pkill rofi || ~/.config/hypr/scripts/clipboard.sh c
bind = $mainMod, TAB, exec, pkill rofi || ~/.config/hypr/scripts/app_launcher.sh w
bind = $mainMod, COMMA, exec, pkill rofi || ~/.config/hypr/scripts/app_launcher.sh e
bindr = $mainMod, SUPER_L, exec, pkill rofi || ~/.config/hypr/scripts/app_launcher.sh d
bind = $mainMod, O, global, caelestia:lock
bind = $mainMod, G, global, caelestia:dashboard
bind = $mainMod, F4, exec, ags -t powermenu
bind = $mainMod, SPACE, global, caelestia:launcher
bind = $mainMod, TAB, exec, ags -t overview
bind = $mainMod, V, exec, caelestia clipboard
bind = $mainMod, COMMA, exec, caelestia emoji -p
bind = $mainMod SHIFT, S, exec, grimblast --freeze copy area
bind = $mainMod CTRL, S, exec, grimblast --freeze copysave area ~/Pictures/Screenshots/"$(date --rfc-3339=seconds)".png
@@ -25,18 +23,19 @@ bind = , XF86AudioNext, exec, playerctl next
bind = , XF86AudioPrev, exec, playerctl previous
bind = , XF86AudioPlay, exec, playerctl play
bind = , XF86AudioPause, exec, playerctl pause
bind = , XF86AudioMute, exec, ~/.config/eww/scripts/audio.sh mutesink @DEFAULT_SINK@
bind = , XF86AudioMicMute, exec, ~/.config/eww/scripts/audio.sh mutesource @DEFAULT_SOURCE@
binde = , XF86AudioRaiseVolume, exec, ~/.config/eww/scripts/audio.sh vol up
binde = , XF86AudioLowerVolume, exec, ~/.config/eww/scripts/audio.sh vol down
bind = , XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle
bind = , XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle
binde = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_SINK@ 5%+
binde = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_SINK@ 5%-
binde = , XF86MonBrightnessDown, exec, brightnessctl set 5%-
binde = , XF86MonBrightnessUp, exec, brightnessctl set 5%+
#bind = , XF86PowerOff, exec, systemctl shutdown
# Applications
bind = $mainMod, T, exec, alacritty
bind = $mainMod, E, exec, nemo
bind = $mainMod, G, exec, ~/.config/hypr/scripts/app_launcher.sh c
bind = CTRL SHIFT, ESCAPE, exec, gnome-system-monitor
bind = $mainMod, G, exec, ags -t calc
bind = CTRL SHIFT, ESCAPE, exec, alacritty -e btop
# Move focus
bind = $mainMod, left, movefocus, l

View File

@@ -1,36 +0,0 @@
#!/bin/bash
rofi_conf="~/.config/rofi/main.rasi"
# Rofi action
case $1 in
d) mode="drun" ;;
w) mode="window" ;;
f) mode="filebrowser" ;;
e) mode="emoji"
action=(-a copy)
;;
c) mode="calc"
action=(-calc-command "wl-copy {result}")
children="\"message\", "
;;
h) echo -e "$0 [action]"
echo "d : drun mode"
echo "w : window mode"
echo "f : filebrowser mode"
exit 0 ;;
*) mode="drun" ;;
esac
# Get font
font=`gsettings get org.gnome.desktop.interface font-name`
fnt_override="configuration {font: \"${font//\'}\";}"
# Get icon theme
icon_override=`gsettings get org.gnome.desktop.interface icon-theme | sed "s/'//g"`
icon_override="configuration {icon-theme: \"${icon_override}\";}"
# Children
children_ovr="mainbox {children: [\"inputbar\", $children \"listbox\"];}"
# Launch rofi
rofi -show $mode ${action[0]} "${action[1]}" -theme-str "$children_ovr" -theme-str "$fnt_override" -theme-str "$icon_override" -config "$rofi_conf"

View File

@@ -1,53 +0,0 @@
#!/bin/bash
#set -e # Exit immediately if a command exits with a non-zero status. (deprecated) -> [CMD] || exit 1
if [[ $# -lt 1 ]] || [[ ! -d $1 ]]; then
echo "Usage:
$0 <dir containing images> [interval(seconds)]"
exit 1
fi
## Check running
running=$(ps -ef | grep "$0" | grep -v grep | wc -l)
if [ ${running} -gt 2 ]; then
echo "Script already running! Killing others (TODO)..."
exit 1
# CRASHES EVERYTHING \/ !!!!!!!!!!
script_pids=$(ps aux | grep -E "$script_name" | grep -v "grep" | awk -v pid="$current_pid" '$2 != pid {print $2}')
# Loop through the PIDs and kill the processes
for pid in $script_pids; do
echo "Killing process $pid"
kill "$pid"
done
fi
## Start swww
swww init &> /dev/null
## Settings for swww
export SWWW_TRANSITION_FPS=60
export SWWW_TRANSITION_STEP=2
INTERVAL=300
if [ ! -z $2 ]; then
INTERVAL=$2
fi
## Main loop
while true; do
find "$1" \
| while read -r img; do
echo "$((RANDOM % 1000)):$img"
done \
| sort -n | cut -d':' -f2- \
| while read -r img; do
img=${img/\~/$HOME}
if [ -d $img ]; then
continue
fi
swww img "$img" --transition-type wipe --resize=fit
ln -sf "$img" ~/.config/background
sleep $INTERVAL
done
done

View File

@@ -1,24 +0,0 @@
#!/bin/bash
roconf="~/.config/rofi/clipboard.rasi"
# Read font
font=`gsettings get org.gnome.desktop.interface font-name`
fnt_override="configuration {font: \"${font//\'}\";}"
# Clipboard action
case $1 in
c) cliphist list | rofi -dmenu -theme-str "entry { placeholder: \"Copy...\";}" -theme-str "$fnt_override" -config $roconf | cliphist decode | wl-copy
;;
d) cliphist list | rofi -dmenu -theme-str "entry { placeholder: \"Delete...\";}" -theme-str "$fnt_override" -config $roconf | cliphist delete
;;
w) if [ `echo -e "Yes\nNo" | rofi -dmenu -theme-str "entry { placeholder: \"Clear Clipboard History?\";}" -theme-str "$fnt_override" -config $roconf` == "Yes" ] ; then
cliphist wipe
fi
;;
*) echo -e "$0 [action]"
echo "c : cliphist list and copy selected"
echo "d : cliphist list and delete selected"
echo "w : cliphist wipe database"
exit 1
;;
esac

View File

@@ -1,5 +0,0 @@
#!/bin/bash
HYPRCMDS=$(hyprctl -j clients | jq -j '.[] | "dispatch closewindow address:\(.address); "')
hyprctl --batch "$HYPRCMDS" >> /tmp/hypr/cexit.log 2>&1

View File

@@ -1,21 +0,0 @@
#!/bin/bash
isplayingvideo(){
if pactl list | grep -q RUNNING; then
exit 1
else
exit 0
fi
}
if ! [ -z $1 ]; then
isplayingvideo
fi
timeout_lock=900
timeout_DPMS=1080
swayidle -w \
timeout ${timeout_lock} "$0 isplayinfvideo || ~/.config/hypr/scripts/lock.sh" \
#timeout ${timeout_DPMS} 'hyprctl dispatch dpms off'
#resume 'hyprctl dispatch dpms on' # Crashes all apps -> Hyprland config set misc/mouse_move_enables_dpms=true

View File

@@ -1,10 +0,0 @@
#!/bin/bash
dnd=$(swaync-client -D)
swaync-client -dn
swaylock -C ~/.config/swaylock/swaylock.conf
if [ "$dnd" == "false" ]; then
swaync-client -df
fi

View File

@@ -1,6 +0,0 @@
#!/bin/bash
HYPRCMDS=$(hyprctl -j clients | jq -j '.[] | "dispatch closewindow address:\(.address); "')
hyprctl --batch "$HYPRCMDS" >> /tmp/hypr/cexit.log 2>&1
hyprctl dispatch exit >> /tmp/hypr/cexit.log 2>&1

View File

@@ -1,13 +0,0 @@
#!/bin/bash
program_name="ags"
check_program_running() {
pgrep -x "$program_name" > /dev/null
}
while ! check_program_running; do
sleep 1
done
sleep 1

View File

@@ -1,18 +1,34 @@
---
- name: "[Hyprland] Install"
ansible.builtin.package:
kewlfft.aur.aur:
name:
- hyprland
state: latest
become: true
state: present
- name: "[Hyprland] Create config folder"
ansible.builtin.file:
mode: "0755"
mode: 0755
path: "{{ ansible_user_dir }}/.config/hypr"
state: directory
- name: "[Hyprland] Create screenshot folder"
ansible.builtin.file:
mode: 0755
path: "{{ ansible_user_dir }}/Pictures/Screenshots"
state: directory
- name: "[Hyprland] Configure"
ansible.builtin.copy:
mode: 0755
src: "./"
dest: "{{ ansible_user_dir }}/.config/hypr"
- name: "[Hyprland] Configure startup"
ansible.builtin.template:
src: startup.conf
dest: "{{ ansible_user_dir }}/.config/hypr"
- name: "[Hyprland] Configure windowrules"
ansible.builtin.template:
src: windowrule.conf
dest: "{{ ansible_user_dir }}/.config/hypr"

View File

@@ -1,23 +1,19 @@
# First for systray
exec-once = ags -c /home/keule/test/config.js
# Shell
exec-once = caelestia shell -d
# Programms
exec-once = armcord
{% if system == "desktop_full" %}
exec-once = legcord
exec-once = feishin
exec-once = nextcloud
exec-once = youtube-music
exec-once = element-desktop
{% endif %}
exec-once = nm-applet
exec-once = blueman-applet
exec-once = playerctld daemon
exec-once = ~/.config/hypr/scripts/idle.sh
exec-once = ~/.config/hypr/scripts/battery_check.sh
# Clipboard
exec-once = wl-paste --type text --watch cliphist store #Stores only text data
exec-once = wl-paste --type image --watch cliphist store #Stores only image data
# Background
exec-once = ~/.config/hypr/scripts/background.sh ~/Data/Pictures/Backgrounds/Desktop/
# Misc
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP

View File

@@ -1,4 +1,5 @@
# Monitors
{% if system == "desktop_full" %}
$monitorOne = HDMI-A-1
$monitorTwo = DP-2
$monitorThree = HDMI-A-2
@@ -6,24 +7,21 @@ $monitorThree = HDMI-A-2
monitor = $monitorOne,1920x1080@144.001007,0x0,1
monitor = $monitorTwo,2560x1440@143.912003,1920x0,1
monitor = $monitorThree,1920x1080@60.000000,4480x0,1
{% endif %}
monitor = ,preferred,auto,1
# Window Rules - (hyprctl -j clients | grep class)
windowrule = workspace 2,^(YouTube Music)$
windowrule = workspace 4,^(explorer.exe)$
windowrule = workspace 4,^(lutris)$
windowrule = workspace 5,^(discord)$
windowrule = workspace 5,^(WebCord)$
windowrule = workspace 5,^(Element)$
windowrule = workspace 5,^(de.keule.client.ui.JavaFX)$
windowrule = float,^(lutris)$
windowrule = size 965 545, ^(lutris)$
windowrule = float,title:^.*culator.*$
windowrule = workspace 2, class:feishin
windowrule = workspace 5, class:discord
windowrule = workspace 5, class:legcord
# windowrule = float,class:lutris
# windowrule = size 965 545, class:lutris
# windowrule = float,title:^.*culator.*$
# Workspace
{% if system == "desktop_full" %}
workspace = 1, monitor:$monitorOne, default:true
workspace = 2, monitor:$monitorOne
@@ -32,3 +30,4 @@ workspace = 4, monitor:$monitorTwo
workspace = 5, monitor:$monitorThree, default:true
workspace = 6, monitor:$monitorThree
{% endif %}

View File

@@ -1,18 +1,17 @@
---
- name: "[Kvantum] Install"
ansible.builtin.package:
kewlfft.aur.aur:
name:
- kvantum
state: latest
become: true
- kvantum-qt5-git
state: present
- name: "[Kvantum] Create config folder"
ansible.builtin.file:
mode: "0755"
path: "{{ ansible_user_dir }}/.config/kvantum"
path: "{{ ansible_user_dir }}/.config/Kvantum"
state: directory
- name: "[Kvantum] Configure"
ansible.builtin.copy:
src: "./"
dest: "{{ ansible_user_dir }}/.config/kvantum"
dest: "{{ ansible_user_dir }}/.config/Kvantum"

161
roles/nvim/files/init.lua Executable file → Normal file
View File

@@ -18,30 +18,33 @@ vim.opt.rtp:prepend(lazypath)
-- Add Plugins
require("lazy").setup({
-- Stats
{ 'wakatime/vim-wakatime', lazy = false },
-- Theme
{
"catppuccin/nvim",
name = "catppuccin.vim",
priority = 1000,
config = function()
vim.g.catppuccin_flavor = "macchiato"
vim.cmd [[colorscheme catppuccin]]
vim.cmd.colorscheme("catppuccin-macchiato")
end,
},
-- Syntax highlighting support
"elkowar/yuck.vim",
"fladson/vim-kitty",
-- Use "gc" to comment visual regions/lines
{ "numToStr/Comment.nvim", opts = {} },
-- Stats
{ 'wakatime/vim-wakatime', lazy = false },
-- Detect tabstop and shiftwidth automatically
-- "tpope/vim-sleuth",
-- Highlight
{ "RRethy/vim-illuminate" },
-- Add indentation guides even on blank lines ???
-- Comment visual regions/lines
{ "numToStr/Comment.nvim", opts = {} },
-- Autoclose brackets
{ "m4xshen/autoclose.nvim", opts = {} },
{ "windwp/nvim-ts-autotag", opts = {}, lazy = false }, -- Doesn't work?
-- Surround selection
"tpope/vim-surround",
-- Add indentation guides
{
"lukas-reineke/indent-blankline.nvim",
main = "ibl",
@@ -61,7 +64,18 @@ require("lazy").setup({
},
},
-- LSP (Configuration under "lspconfig")
-- Debug
{
"rcarriga/nvim-dap-ui",
dependencies = {
"mfussenegger/nvim-dap",
"nvim-neotest/nvim-nio"
},
opts = {}
},
{ "theHamsta/nvim-dap-virtual-text", opts = {} },
-- LSP
{
"neovim/nvim-lspconfig",
dependencies = {
@@ -70,7 +84,6 @@ require("lazy").setup({
"williamboman/mason-lspconfig.nvim",
-- Useful status updates for LSP
-- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})`
{ "j-hui/fidget.nvim", tag = "legacy", opts = {} },
-- Additional lua configuration, makes nvim stuff amazing!
@@ -91,8 +104,12 @@ require("lazy").setup({
-- Adds a number of user-friendly snippets
'rafamadriz/friendly-snippets',
-- Ai cmp
'tzachar/cmp-ai'
},
},
{ 'tzachar/cmp-ai', dependencies = 'nvim-lua/plenary.nvim' },
-- Show available command
{
@@ -235,6 +252,72 @@ vim.keymap.set("n", "<C-j>", "<C-W>j")
vim.keymap.set("n", "<C-k>", "<C-W>k")
vim.keymap.set("n", "<C-l>", "<C-W>l")
--- Debug
local dap, dapui, dapvs = require("dap"), require("dapui"), require('dap.ext.vscode')
vim.keymap.set("n", "<Leader>b", dap.toggle_breakpoint, { desc = "[b] Debug toggle breakpoint" })
vim.keymap.set("n", "<Leader>dc", dap.continue, { desc = "[c] Debug Continue/Start" })
vim.keymap.set("n", "<Leader>n", dap.step_over, { desc = "[n] Debug step over" })
vim.keymap.set("n", "<Leader>N", dap.step_into, { desc = "[N] Debug step into" })
vim.keymap.set("n", "<Leader>m", dap.step_out, { desc = "[m] Debug step out" })
vim.keymap.set("n", "<Leader>dt", dapui.toggle, { desc = "[t] Debug toggle view" })
vim.keymap.set("n", "<Leader>dl", function()
dapvs.load_launchjs("launch.json", { cppdbg = { 'c', 'cpp' } })
end,
{ desc = "[l] Debug load launch config" })
dap.listeners.before.attach.dapui_config = function()
dapui.open()
end
dap.listeners.before.launch.dapui_config = function()
dapui.open()
end
-- dap.listeners.before.event_terminated.dapui_config = function()
-- dapui.close()
-- end
--
-- dap.listeners.before.event_exited.dapui_config = function()
-- dapui.close()
-- end
dap.adapters.cppdbg = {
id = "cppdbg",
type = "executable",
command = "/home/pa/dap/c/extension/debugAdapters/bin/OpenDebugAD7",
}
dap.configurations.c = {
{
name = "Launch file",
type = "cppdbg",
request = "launch",
program = function()
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
end,
args = function()
local s = vim.fn.input('Args: ')
local t = {}
for word in s:gmatch("%S+") do
table.insert(t, word)
end
return t
end,
cwd = '${workspaceFolder}',
stopAtEntry = true,
},
-- {
-- name = 'Attach to gdbserver :1234',
-- type = 'cppdbg',
-- request = 'launch',
-- MIMode = 'gdb',
-- miDebuggerServerAddress = 'localhost:1234',
-- miDebuggerPath = '/usr/bin/gdb',
-- cwd = '${workspaceFolder}',
-- program = function()
-- return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
-- end,
-- },
}
--- [[ Highlight on yank ]]
-- See `:help vim.highlight.on_yank()`
local highlight_group = vim.api.nvim_create_augroup("YankHighlight", { clear = true })
@@ -374,8 +457,8 @@ local on_attach = function(_, bufnr)
nmap("gd", vim.lsp.buf.definition, "[G]oto [D]efinition")
nmap("gr", require("telescope.builtin").lsp_references, "[G]oto [R]eferences")
nmap("gI", require("telescope.builtin").lsp_implementations, "[G]oto [I]mplementation")
nmap("ds", require("telescope.builtin").lsp_document_symbols, "[D]ocument [S]ymbols")
nmap("<leader>D", vim.lsp.buf.type_definition, "Type [D]efinition")
nmap("<leader>ds", require("telescope.builtin").lsp_document_symbols, "[D]ocument [S]ymbols")
nmap("<leader>ws", require("telescope.builtin").lsp_dynamic_workspace_symbols, "[W]orkspace [S]ymbols")
-- See `:help K` for why this keymap
@@ -386,6 +469,7 @@ local on_attach = function(_, bufnr)
nmap("gD", vim.lsp.buf.declaration, "[G]oto [D]eclaration")
nmap("<leader>wa", vim.lsp.buf.add_workspace_folder, "[W]orkspace [A]dd Folder")
nmap("<leader>wr", vim.lsp.buf.remove_workspace_folder, "[W]orkspace [R]emove Folder")
nmap("<leader>f", vim.lsp.buf.format, "[F]ormat")
nmap("<leader>wl", function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, "[W]orkspace [L]ist Folders")
@@ -422,12 +506,22 @@ local servers = {
jsonls = {},
clangd = {},
cssls = {},
jdtls = {},
jdtls = {
java = {
maven = { downloadSources = true }
}
},
html = {},
lua_ls = {
Lua = {
workspace = { checkThirdParty = false },
workspace = {
library = vim.api.nvim_get_runtime_file('', true),
checkThirdParty = false
},
telemetry = { enable = false },
diagnostics = {
globals = { "vim" }
}
},
},
}
@@ -502,8 +596,39 @@ cmp.setup {
sources = {
{ name = "nvim_lsp" },
{ name = "luasnip" },
-- { name = "cmp_ai" },
},
}
-- local cmp_ai = require('cmp_ai.config')
-- cmp_ai:setup({
-- max_lines = 100,
-- provider = 'Ollama',
-- provider_options = {
-- model = 'mistral',
-- },
-- notify = true,
-- notify_callback = function(msg)
-- vim.notify(msg)
-- end,
-- run_on_every_keystroke = true,
-- ignored_file_types = {
-- -- default is not to ignore
-- -- uncomment to ignore in lua:
-- -- lua = true
-- },
-- })
-- The line beneath this is called `modeline`. See `:help modeline`
-- vim: ts=2 sts=2 sw=2 et
-- notify_callback = function(msg)
-- vim.notify(msg)
-- end,
-- run_on_every_keystroke = true,
-- ignored_file_types = {
-- -- default is not to ignore
-- -- uncomment to ignore in lua:
-- -- lua = true
-- },
-- })
-- The line beneath this is called `modeline`. See `:help modeline`
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -0,0 +1,17 @@
[Settings]
gtk-theme-name=Catppuccin-Macchiato-Standard-Sapphire-Dark
gtk-icon-theme-name=Papirus
gtk-font-name=CaskaydiaCove Nerd Font 12
gtk-cursor-theme-name=Breeze
gtk-cursor-theme-size=24
gtk-toolbar-style=GTK_TOOLBAR_ICONS
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=0
gtk-menu-images=0
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=0
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintslight
gtk-xft-rgba=rgb
gtk-application-prefer-dark-theme=0

View File

@@ -0,0 +1,9 @@
Net/ThemeName "Catppuccin-Macchiato-Standard-Sapphire-Dark"
Net/IconThemeName "Papirus"
Gtk/CursorThemeName "Breeze"
Net/EnableEventSounds 1
EnableInputFeedbackSounds 0
Xft/Antialias 1
Xft/Hinting 1
Xft/HintStyle "hintslight"
Xft/RGBA "rgb"

View File

@@ -0,0 +1,19 @@
# DO NOT EDIT! This file will be overwritten by nwg-look.
# Any customization should be done in ~/.gtkrc-2.0.mine instead.
include "/home/keule/.gtkrc-2.0.mine"
gtk-theme-name="Catppuccin-Macchiato-Standard-Sapphire-Dark"
gtk-icon-theme-name="Papirus"
gtk-font-name="CaskaydiaCove Nerd Font 12"
gtk-cursor-theme-name="Breeze"
gtk-cursor-theme-size=24
gtk-toolbar-style=GTK_TOOLBAR_ICONS
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=0
gtk-menu-images=0
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=0
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle="hintslight"
gtk-xft-rgba="rgb"

View File

@@ -0,0 +1,11 @@
---
- name: "[NWG-look] Install"
kewlfft.aur.aur:
name:
- nwg-look
state: present
- name: "[NWG-look] Configure"
ansible.builtin.copy:
src: "./"
dest: "{{ ansible_user_dir }}/"

View File

@@ -0,0 +1,32 @@
[Appearance]
color_scheme_path=/usr/share/qt5ct/colors/darker.conf
custom_palette=false
icon_theme=Papirus
standard_dialogs=default
style=kvantum-dark
[Fonts]
fixed="CaskaydiaCove Nerd Font Mono,12,-1,5,50,0,0,0,0,0,Regular"
general="CaskaydiaCove Nerd Font,12,-1,5,50,0,0,0,0,0,Regular"
[Interface]
activate_item_on_single_click=1
buttonbox_layout=0
cursor_flash_time=1000
dialog_buttons_have_icons=1
double_click_interval=400
gui_effects=@Invalid()
keyboard_scheme=2
menus_have_icons=true
show_shortcuts_in_context_menus=true
stylesheets=@Invalid()
toolbutton_style=4
underline_shortcut=1
wheel_scroll_lines=3
[SettingsWindow]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\a\x80\0\0\0\0\0\0\fw\0\0\x2\xb7\0\0\0\0\0\0\0\0\0\0\x4\xff\0\0\x2\xbe\0\0\0\0\x2\0\0\0\n\0\0\0\a\x80\0\0\0\0\0\0\fw\0\0\x2\xb7)
[Troubleshooting]
force_raster_widgets=1
ignored_applications=@Invalid()

View File

@@ -0,0 +1,17 @@
---
- name: "[QT5CT] Install"
kewlfft.aur.aur:
name:
- qt5ct
state: present
- name: "[QT5CT] Create config folder"
ansible.builtin.file:
mode: "0755"
path: "{{ ansible_user_dir }}/.config/qt5ct"
state: directory
- name: "[QT5CT] Configure"
ansible.builtin.copy:
src: "./"
dest: "{{ ansible_user_dir }}/.config/qt5ct"

View File

@@ -0,0 +1,14 @@
import QtQuick 2.15
import SddmComponents 2.0
Clock {
id: time
color: config.text
timeFont.family: config.Font
dateFont.family: config.Font
anchors {
margins: 10
top: parent.top
right: parent.right
}
}

View File

@@ -0,0 +1,147 @@
import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.15
Item {
property var user: userField.text
property var password: passwordField.text
property var session: sessionPanel.session
property var inputHeight: Screen.height * 0.032
property var inputWidth: Screen.width * 0.16
Rectangle {
id: loginBackground
anchors {
verticalCenter: parent.verticalCenter
horizontalCenter: parent.horizontalCenter
}
height: inputHeight * 5.3
width: inputWidth * 1.2
radius: 5
visible: config.LoginBackground == "true" ? true : false
color: config.mantle
}
Column {
spacing: 8
anchors {
bottom: parent.bottom
left: parent.left
}
PowerButton {
id: powerButton
}
RebootButton {
id: rebootButton
}
SleepButton {
id: sleepButton
}
z: 5
}
Column {
spacing: 8
anchors {
bottom: parent.bottom
right: parent.right
}
SessionPanel {
id: sessionPanel
}
z: 5
}
Column {
spacing: 8
z: 5
width: inputWidth
anchors {
verticalCenter: parent.verticalCenter
horizontalCenter: parent.horizontalCenter
}
UserField {
id: userField
height: inputHeight
width: parent.width
}
PasswordField {
id: passwordField
height: inputHeight
width: parent.width
onAccepted: loginButton.clicked()
}
Button {
id: loginButton
height: inputHeight
width: parent.width
enabled: user != "" && password != "" ? true : false
hoverEnabled: true
contentItem: Text {
id: buttonText
renderType: Text.NativeRendering
font {
family: config.Font
pointSize: config.FontSize
bold: true
}
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
color: config.crust
text: "Login"
}
background: Rectangle {
id: buttonBackground
color: config.sapphire
radius: 3
}
states: [
State {
name: "pressed"
when: loginButton.down
PropertyChanges {
target: buttonBackground
color: config.teal
}
PropertyChanges {
target: buttonText
}
},
State {
name: "hovered"
when: loginButton.hovered
PropertyChanges {
target: buttonBackground
color: config.teal
}
PropertyChanges {
target: buttonText
}
},
State {
name: "enabled"
when: loginButton.enabled
PropertyChanges {
target: buttonBackground
}
PropertyChanges {
target: buttonText
}
}
]
transitions: Transition {
PropertyAnimation {
properties: "color"
duration: 300
}
}
onClicked: {
sddm.login(user, password, session)
}
}
}
Connections {
target: sddm
function onLoginFailed() {
passwordField.text = ""
passwordField.focus = true
}
}
}

View File

@@ -0,0 +1,48 @@
import QtQuick 2.15
import QtQuick.Controls 2.15
TextField {
id: passwordField
focus: true
selectByMouse: true
placeholderText: "Password"
echoMode: TextInput.Password
passwordCharacter: "•"
passwordMaskDelay: config.PasswordShowLastLetter
selectionColor: config.overlay0
renderType: Text.NativeRendering
font.family: config.Font
font.pointSize: config.FontSize
font.bold: true
color: config.text
horizontalAlignment: TextInput.AlignHCenter
background: Rectangle {
id: passFieldBackground
radius: 3
color: config.surface0
}
states: [
State {
name: "focused"
when: passwordField.activeFocus
PropertyChanges {
target: passFieldBackground
color: config.surface1
}
},
State {
name: "hovered"
when: passwordField.hovered
PropertyChanges {
target: passFieldBackground
color: config.surface1
}
}
]
transitions: Transition {
PropertyAnimation {
properties: "color"
duration: 300
}
}
}

View File

@@ -0,0 +1,41 @@
import QtQuick 2.15
import QtQuick.Controls 2.15
Item {
implicitHeight: powerButton.height
implicitWidth: powerButton.width
Button {
id: powerButton
height: inputHeight
width: inputHeight
hoverEnabled: true
icon {
source: Qt.resolvedUrl("../icons/power.svg")
height: height
width: width
color: config.crust
}
background: Rectangle {
id: powerButtonBackground
radius: 3
color: config.red
}
states: [
State {
name: "hovered"
when: powerButton.hovered
PropertyChanges {
target: powerButtonBackground
color: config.rosewater
}
}
]
transitions: Transition {
PropertyAnimation {
properties: "color"
duration: 300
}
}
onClicked: sddm.powerOff()
}
}

View File

@@ -0,0 +1,41 @@
import QtQuick 2.15
import QtQuick.Controls 2.15
Item {
implicitHeight: rebootButton.height
implicitWidth: rebootButton.width
Button {
id: rebootButton
height: inputHeight
width: inputHeight
hoverEnabled: true
icon {
source: Qt.resolvedUrl("../icons/reboot.svg")
height: height
width: width
color: config.crust
}
background: Rectangle {
id: rebootButtonBackground
radius: 3
color: config.red
}
states: [
State {
name: "hovered"
when: rebootButton.hovered
PropertyChanges {
target: rebootButtonBackground
color: config.rosewater
}
}
]
transitions: Transition {
PropertyAnimation {
properties: "color"
duration: 300
}
}
onClicked: sddm.reboot()
}
}

View File

@@ -0,0 +1,156 @@
import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQml.Models 2.15
Item {
property var session: sessionList.currentIndex
implicitHeight: sessionButton.height
implicitWidth: sessionButton.width
DelegateModel {
id: sessionWrapper
model: sessionModel
delegate: ItemDelegate {
id: sessionEntry
height: inputHeight
width: parent.width
highlighted: sessionList.currentIndex == index
contentItem: Text {
renderType: Text.NativeRendering
font.family: config.Font
font.pointSize: config.FontSize
font.bold: true
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
color: config.text
text: name
}
background: Rectangle {
id: sessionEntryBackground
color: config.surface1
radius: 3
}
states: [
State {
name: "hovered"
when: sessionEntry.hovered
PropertyChanges {
target: sessionEntryBackground
color: config.surface2
}
}
]
transitions: Transition {
PropertyAnimation {
property: "color"
duration: 300
}
}
MouseArea {
anchors.fill: parent
onClicked: {
sessionList.currentIndex = index
sessionPopup.close()
}
}
}
}
Button {
id: sessionButton
height: inputHeight
width: inputHeight
hoverEnabled: true
icon {
source: Qt.resolvedUrl("../icons/settings.svg")
height: height
width: width
color: config.text
}
background: Rectangle {
id: sessionButtonBackground
color: config.surface0
radius: 3
}
states: [
State {
name: "pressed"
when: sessionButton.down
PropertyChanges {
target: sessionButtonBackground
color: config.surface1
}
},
State {
name: "hovered"
when: sessionButton.hovered
PropertyChanges {
target: sessionButtonBackground
color: config.surface2
}
},
State {
name: "selection"
when: sessionPopup.visible
PropertyChanges {
target: sessionButtonBackground
color: config.surface2
}
}
]
transitions: Transition {
PropertyAnimation {
properties: "color"
duration: 150
}
}
onClicked: {
sessionPopup.visible ? sessionPopup.close() : sessionPopup.open()
sessionButton.state = "pressed"
}
}
Popup {
id: sessionPopup
width: inputWidth + padding * 2
x: (sessionButton.width + sessionList.spacing) * -7.6
y: -(contentHeight + padding * 2) + sessionButton.height
padding: inputHeight / 10
background: Rectangle {
radius: 5.4
color: config.surface0
}
contentItem: ListView {
id: sessionList
implicitHeight: contentHeight
spacing: 8
model: sessionWrapper
currentIndex: sessionModel.lastIndex
clip: true
}
enter: Transition {
ParallelAnimation {
NumberAnimation {
property: "opacity"
from: 0
to: 1
duration: 400
easing.type: Easing.OutExpo
}
NumberAnimation {
property: "x"
from: sessionPopup.x + (inputWidth * 0.1)
to: sessionPopup.x
duration: 500
easing.type: Easing.OutExpo
}
}
}
exit: Transition {
NumberAnimation {
property: "opacity"
from: 1
to: 0
duration: 300
easing.type: Easing.OutExpo
}
}
}
}

View File

@@ -0,0 +1,41 @@
import QtQuick 2.15
import QtQuick.Controls 2.15
Item {
implicitHeight: sleepButton.height
implicitWidth: sleepButton.width
Button {
id: sleepButton
height: inputHeight
width: inputHeight
hoverEnabled: true
icon {
source: Qt.resolvedUrl("../icons/sleep.svg")
height: height
width: width
color: config.crust
}
background: Rectangle {
id: sleepButtonBg
color: config.red
radius: 3
}
states: [
State {
name: "hovered"
when: sleepButton.hovered
PropertyChanges {
target: sleepButtonBg
color: config.rosewater
}
}
]
transitions: Transition {
PropertyAnimation {
properties: "color"
duration: 300
}
}
onClicked: sddm.suspend()
}
}

View File

@@ -0,0 +1,50 @@
import QtQuick 2.15
import QtQuick.Controls 2.15
TextField {
id: userField
height: inputHeight
width: inputWidth
selectByMouse: true
echoMode: TextInput.Normal
selectionColor: config.overlay0
renderType: Text.NativeRendering
font {
family: config.Font
pointSize: config.FontSize
bold: true
}
color: config.text
horizontalAlignment: Text.AlignHCenter
placeholderText: "Username"
text: userModel.lastUser
background: Rectangle {
id: userFieldBackground
color: config.surface0
radius: 3
}
states: [
State {
name: "focused"
when: userField.activeFocus
PropertyChanges {
target: userFieldBackground
color: config.surface1
}
},
State {
name: "hovered"
when: userField.hovered
PropertyChanges {
target: userFieldBackground
color: config.surface1
}
}
]
transitions: Transition {
PropertyAnimation {
properties: "color"
duration: 300
}
}
}

View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2021 Catppuccin
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.

View File

@@ -0,0 +1,48 @@
import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.15
import "Components"
Item {
id: root
height: Screen.height
width: Screen.width
Rectangle {
id: background
anchors.fill: parent
height: parent.height
width: parent.width
z: 0
color: config.base
}
Image {
id: backgroundImage
anchors.fill: parent
height: parent.height
width: parent.width
fillMode: Image.PreserveAspectCrop
visible: config.CustomBackground == "true" ? true : false
z: 1
source: config.Background
asynchronous: false
cache: true
mipmap: true
clip: true
}
Item {
id: mainPanel
z: 3
anchors {
fill: parent
margins: 50
}
Clock {
id: time
visible: config.ClockEnabled == "true" ? true : false
}
LoginPanel {
id: loginPanel
anchors.fill: parent
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<svg fill="#000000" height="800px" width="800px" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 198.715 198.715" xml:space="preserve">
<g>
<path d="M161.463,48.763c-2.929-2.929-7.677-2.929-10.607,0c-2.929,2.929-2.929,7.677,0,10.606
c13.763,13.763,21.342,32.062,21.342,51.526c0,19.463-7.579,37.761-21.342,51.523c-14.203,14.204-32.857,21.305-51.516,21.303
c-18.659-0.001-37.322-7.104-51.527-21.309c-28.405-28.405-28.402-74.625,0.005-103.032c2.929-2.929,2.929-7.678,0-10.606
c-2.929-2.929-7.677-2.929-10.607,0C2.956,83.029,2.953,138.766,37.206,173.019c17.132,17.132,39.632,25.697,62.135,25.696
c22.497-0.001,44.997-8.564,62.123-25.69c16.595-16.594,25.734-38.659,25.734-62.129C187.199,87.425,178.059,65.359,161.463,48.763
z"/>
<path d="M99.332,97.164c4.143,0,7.5-3.358,7.5-7.5V7.5c0-4.142-3.357-7.5-7.5-7.5s-7.5,3.358-7.5,7.5v82.164
C91.832,93.807,95.189,97.164,99.332,97.164z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1080" height="1080" viewBox="0 0 1080 1080" xml:space="preserve">
<defs>
</defs>
<g transform="matrix(1 0 0 1 540 540)" id="2a220bb6-5b48-475d-961e-cf61e288ad30" >
<rect style="stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(255,255,255); fill-rule: nonzero; opacity: 1; visibility: hidden;" vector-effect="non-scaling-stroke" x="-540" y="-540" rx="0" ry="0" width="1080" height="1080" />
</g>
<g transform="matrix(1 0 0 1 540 540)" id="fd45914b-ae78-4c99-8f0c-f2807b2dc79c" >
</g>
<g transform="matrix(45.29 0 0 45.29 556.31 508.95)" id="95767c2e-b581-4faa-9009-e8003f7e8866" >
<path style="stroke: rgb(0,0,0); stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: nonzero; opacity: 1;" vector-effect="non-scaling-stroke" transform=" translate(-8.36, -16)" d="M 15.88 13.84 C 14.200000000000001 10.36 10.440000000000001 8.6 6.840000000000002 9.24 L 7.800000000000002 7.44 C 8.040000000000001 7.04 7.880000000000002 6.5200000000000005 7.480000000000001 6.32 C 7.080000000000001 6.08 6.560000000000001 6.24 6.360000000000001 6.640000000000001 L 4.400000000000001 10.280000000000001 C 4.400000000000001 10.280000000000001 3.9600000000000013 11.000000000000002 4.6400000000000015 11.32 L 8.280000000000001 13.280000000000001 C 8.4 13.360000000000001 8.56 13.4 8.680000000000001 13.4 C 8.96 13.4 9.280000000000001 13.24 9.400000000000002 12.96 C 9.640000000000002 12.56 9.480000000000002 12.040000000000001 9.080000000000002 11.84 L 7.200000000000002 10.8 C 10.040000000000003 10.32 13.000000000000002 11.760000000000002 14.320000000000002 14.48 C 15.920000000000002 17.8 14.520000000000001 21.8 11.200000000000003 23.36 C 9.600000000000003 24.12 7.8000000000000025 24.24 6.120000000000003 23.64 C 4.440000000000003 23.040000000000003 3.0800000000000027 21.84 2.320000000000003 20.240000000000002 C 1.560000000000003 18.64 1.440000000000003 16.840000000000003 2.0400000000000027 15.160000000000002 C 2.200000000000003 14.720000000000002 1.9600000000000026 14.240000000000002 1.5200000000000027 14.080000000000002 C 1.1200000000000028 14.000000000000002 0.6400000000000027 14.240000000000002 0.48000000000000265 14.680000000000001 C -0.23999999999999733 16.8 -0.11999999999999733 19.040000000000003 0.8400000000000026 21.040000000000003 C 1.8000000000000025 23.040000000000003 3.4800000000000026 24.560000000000002 5.600000000000002 25.320000000000004 C 6.520000000000002 25.640000000000004 7.440000000000002 25.800000000000004 8.360000000000003 25.800000000000004 C 9.600000000000003 25.800000000000004 10.840000000000003 25.520000000000003 11.960000000000003 24.960000000000004 C 16.120000000000005 22.960000000000004 17.880000000000003 17.960000000000004 15.880000000000003 13.840000000000005 z" stroke-linecap="round" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M24 13.616v-3.232c-1.651-.587-2.694-.752-3.219-2.019v-.001c-.527-1.271.1-2.134.847-3.707l-2.285-2.285c-1.561.742-2.433 1.375-3.707.847h-.001c-1.269-.526-1.435-1.576-2.019-3.219h-3.232c-.582 1.635-.749 2.692-2.019 3.219h-.001c-1.271.528-2.132-.098-3.707-.847l-2.285 2.285c.745 1.568 1.375 2.434.847 3.707-.527 1.271-1.584 1.438-3.219 2.02v3.232c1.632.58 2.692.749 3.219 2.019.53 1.282-.114 2.166-.847 3.707l2.285 2.286c1.562-.743 2.434-1.375 3.707-.847h.001c1.27.526 1.436 1.579 2.019 3.219h3.232c.582-1.636.75-2.69 2.027-3.222h.001c1.262-.524 2.12.101 3.698.851l2.285-2.286c-.744-1.563-1.375-2.433-.848-3.706.527-1.271 1.588-1.44 3.221-2.021zm-12 2.384c-2.209 0-4-1.791-4-4s1.791-4 4-4 4 1.791 4 4-1.791 4-4 4z"/></svg>

After

Width:  |  Height:  |  Size: 811 B

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<svg fill="#000000" width="800px" height="800px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg">
<title>moon</title>
<path d="M10.895 7.574c0 7.55 5.179 13.67 11.567 13.67 1.588 0 3.101-0.38 4.479-1.063-1.695 4.46-5.996 7.636-11.051 7.636-6.533 0-11.83-5.297-11.83-11.83 0-4.82 2.888-8.959 7.023-10.803-0.116 0.778-0.188 1.573-0.188 2.39z"></path>
</svg>

After

Width:  |  Height:  |  Size: 419 B

View File

@@ -0,0 +1,14 @@
[SddmGreeterTheme]
Name=Catppuccin macchiato
Description=Soothing pastel theme for SDDM
Type=sddm-theme
Version=2.1
Website=https://github.com/catppuccin/sddm
Screenshot=preview.png
MainScript=Main.qml
ConfigFile=theme.conf
TranslationsDirectory=translations
Theme-Id=Catppuccin
Theme-API=2.0
License=MIT
QtVersion=6

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -0,0 +1,39 @@
[General]
Font="CaskaydiaCove Nerd Font"
FontSize=12
ClockEnabled="true"
CustomBackground="false"
LoginBackground="false"
Background="backgrounds/wall.jpg"
# Uncomment this option to show the last letter of the password
# for the number of milliseconds specified
# PasswordShowLastLetter=1000
# DON'T CHANGE THESE
rosewater = "#f4dbd6"
flamingo = "#f0c6c6"
pink = "#f5bde6"
mauve = "#c6a0f6"
red = "#ed8796"
maroon = "#ee99a0"
peach = "#f5a97f"
yellow = "#eed49f"
green = "#a6da95"
teal = "#8bd5ca"
sky = "#91d7e3"
sapphire = "#7dc4e4"
blue = "#8aadf4"
lavender = "#b7bdf8"
text = "#cad3f5"
subtext1 = "#b8c0e0"
subtext0 = "#a5adcb"
overlay2 = "#939ab7"
overlay1 = "#8087a2"
overlay0 = "#6e738d"
surface2 = "#5b6078"
surface1 = "#494d64"
surface0 = "#363a4f"
base = "#24273a"
mantle = "#1e2030"
crust = "#181926"

View File

@@ -6,9 +6,23 @@
state: latest
become: true
- name: "[SDDM] Create config folder"
ansible.builtin.file:
mode: 0755
path: "/etc/sddm.conf.d/"
state: directory
become: true
- name: "[SDDM] Configure"
ansible.builtin.copy:
mode: 0755
src: "./"
dest: "/etc/"
src: "./sddm.conf.d/"
dest: "/etc/sddm.conf.d/"
become: true
- name: "[SDDM] Configure theme"
ansible.builtin.copy:
mode: 0755
src: "./themes/"
dest: "/usr/share/sddm/themes/"
become: true

View File

@@ -1,10 +0,0 @@
clock
grace=5
indicator
color=550000
timestr=%k:%M
datestr=%a %e.%m.%Y
effect-blur=4x2
effect-scale=0.4
effect-vignette=0.2:0.5
image=~/.config/background

View File

@@ -1,19 +0,0 @@
---
- name: "[Swaylock] Install"
kewlfft.aur.aur:
name:
- swaylock-effects-git
use: paru
state: present
become: true
- name: "[Swaylock] Create config folder"
ansible.builtin.file:
mode: "0755"
path: "{{ ansible_user_dir }}/.config/swaylock"
state: directory
- name: "[Swaylock] Configure"
ansible.builtin.copy:
src: "./"
dest: "{{ ansible_user_dir }}/.config/swaylock"

View File

@@ -22,12 +22,16 @@
name:
- networkmanager
- networkmanager-openvpn
- network-manager-applet
- wireguard-tools
- inotify-tools
- libqalculate
- cifs-utils
- reflector
- os-prober
- ntfs-3g
- openssh
- upower
- expac
- unzip
- less
- curl
@@ -37,8 +41,9 @@
- tar
- eza
- bat
- fzf
- fd
- jq
use: paru
state: present
tags:
- default_pkgs
@@ -50,7 +55,7 @@
- maven
- rustup
- npm
use: paru
- go
state: present
tags:
- programming_pkgs
@@ -70,7 +75,7 @@
- noto-fonts-cjk
- noto-fonts-emoji
- ttf-font-awesome
- ttf-firacode-nerd
- nerd-fonts
# Pipewire
- pipewire
- wireplumber
@@ -79,20 +84,21 @@
- pipewire-jack
- pipewire-pulse
- gst-plugin-pipewire
# Network
- network-manager-applet
# Bluetooth
- bluez
- bluez-utils
- blueman
- gnome-bluetooth-3.0
# Printing
- cups
- cups-pdf
# Theming
#- qt5ct
- nwg-look
- qt5ct
# Icon Themes
- papirus-icon-theme
# Cursor Themes
- rose-pine-hyprcursor
- xcursor-breeze
# Themes
- catppuccin-gtk-theme-frappe
@@ -107,6 +113,7 @@
- mediainfo
- hyprpicker
- swww
- sddm
- swayidle
- grimblast-git
- cliphist
@@ -114,7 +121,6 @@
- polkit-kde-agent
- xdg-desktop-portal-hyprland
- gnome-keyring
use: paru
state: present
tags:
- desktop_pkgs
@@ -123,20 +129,24 @@
- name: "[Arch] Install desktop applications"
kewlfft.aur.aur:
name:
- youtube-music
- libreoffice-fresh
- nextcloud-client
- appimagelauncher
- feishin-appimage
- element-desktop
- youtube-music
- waypaper-git
- vscodium-bin
- pavucontrol
- thunderbird
- hyprpicker
- brave-bin
- obsidian
- discord
- yt-dlp
- nvtop
- nemo
- nemo-fileroller
- gvfs-smb
- gvfs-mtp
- mpv
# Device configuration
#- openrazer-daemon
@@ -148,7 +158,6 @@
#- gucharmap
# Calculator
#- galculator
use: paru
state: present
tags:
- desktop_apps
@@ -207,7 +216,6 @@
- lib32-gst-plugins-base-libs
- vulkan-icd-loader
- lib32-vulkan-icd-loader
use: paru
state: present
tags:
- desktop_pkgs
@@ -226,7 +234,6 @@
- lib32-mesa
- vulkan-radeon
- lib32-vulkan-radeon
use: paru
state: present
when: "system == 'desktop_full' and 'Advanced Micro Devices' in gpu_info.stdout"
@@ -236,7 +243,6 @@
- lib32-mesa
- vulkan-intel
- lib32-vulkan-intel
use: paru
state: present
tags:
- desktop_pkgs
@@ -249,7 +255,6 @@
- nvidia-utils
- lib32-nvidia-utils
- nvidia-settings
use: paru
state: present
tags:
- desktop_pkgs
@@ -267,3 +272,13 @@
- desktop_services
when: "system == 'desktop'"
become: true
- name: "Set makepkg threads"
ansible.builtin.lineinfile:
path: /etc/makepkg.conf
regexp: '^#MAKEFLAGS='
line: 'MAKEFLAGS="-j10"'
state: present
tags:
- makepkg
become: true

View File

@@ -0,0 +1,7 @@
---
- name: "[Wakatime]"
ansible.builtin.template:
mode: 0644
src: wakatime.cfg
dest: "{{ ansible_user_dir }}/.wakatime.cfg"
ignore_errors: true

View File

@@ -0,0 +1,3 @@
[settings]
api_url = https://wakapi.keulelab.de/api
api_key = {{ wakapi_key }}

View File

@@ -1,20 +1,25 @@
# Bookmarks
[[manager.prepend_keymap]]
[[mgr.prepend_keymap]]
on = [ "b", "g" ]
run = "cd ~/git/"
desc = "GIT"
[[manager.prepend_keymap]]
on = [ "b", "d" ]
[[mgr.prepend_keymap]]
on = [ "b", "D" ]
run = "cd ~/Data/"
desc = "DATA"
[[manager.prepend_keymap]]
[[mgr.prepend_keymap]]
on = [ "b", "d" ]
run = "cd ~/.dotfiles/"
desc = "DOTFILES"
[[mgr.prepend_keymap]]
on = [ "b", "s" ]
run = "plugin bookmark --args=save"
run = "plugin bookmark -- save"
desc = "Save Bookmark"
[[manager.prepend_keymap]]
[[mgr.prepend_keymap]]
on = [ "b", "j" ]
run = "plugin bookmark --args=jump"
desc = "Jump Bookmark"
run = "plugin bookmark -- jump"
desc = "Jump to Bookmark"

View File

@@ -0,0 +1,9 @@
MIT
Copyright 2025 Keule2
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.

View File

@@ -0,0 +1,15 @@
# General
Simple plugin to create a tmp bookmark and jump to it.
# Usage
```toml
[[mgr.prepend_keymap]]
on = [ "b", "s" ]
run = "plugin bookmark -- save"
desc = "Save Bookmark"
[[mgr.prepend_keymap]]
on = [ "b", "j" ]
run = "plugin bookmark -- jump"
desc = "Jump to Bookmark"
```

View File

@@ -2,17 +2,17 @@ local temp_dir = os.getenv("TEMP") or os.getenv("TMP") or "/tmp"
local file_name = temp_dir .. "/bookmark.yazi"
local save_bookmark = ya.sync(function(state, idx)
local folder = Folder:by_kind(Folder.CURRENT)
local folder = tostring(cx.active.current.cwd)
local file = io.open(file_name, "w")
if file then
file:write(tostring(folder.cwd))
file:write(folder)
file:close()
ya.notify { title = "Saved Bookmark", content = folder, timeout = 3, level = "info" }
end
end)
local jump_bookmark = ya.sync(function(state, idx)
local io = require("io")
local file = io.open(file_name, "r")
if file then
@@ -24,8 +24,8 @@ local jump_bookmark = ya.sync(function(state, idx)
end)
return {
entry = function(_, args)
local action = args[1]
entry = function(_, job)
local action = job.args[1]
if not action then
return
end

View File

@@ -1,4 +1,5 @@
[manager]
[mgr]
sort_dir_first = true
show_hidden = true
show_symlink = true
linemode = "size"