Migrated to ansible

This commit is contained in:
2024-04-02 00:59:42 +02:00
parent c53268e307
commit 0ccf6427f2
136 changed files with 5157 additions and 1407 deletions

48
roles/ags/files/config.js Normal file
View File

@@ -0,0 +1,48 @@
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)]
};

19
roles/ags/tasks/main.yml Normal file
View File

@@ -0,0 +1,19 @@
---
- 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

@@ -0,0 +1,19 @@
import = [
# Theme
"~/.config/alacritty/catppuccin-macchiato.toml"
]
[env]
TERM = "xterm-256color"
[window]
opacity = 0.7
decorations = "None"
padding = { x = 0, y = 0 }
[font]
normal = {family = "CaskaydiaCove Nerd Font", style = "Mono"}
[cursor]
style = {shape = "Beam", blinking = "On"}
vi_mode_style = {shape = "Block", blinking = "On"}

View File

@@ -0,0 +1,97 @@
# 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.
[colors.primary]
background = "#24273A"
foreground = "#CAD3F5"
dim_foreground = "#CAD3F5"
bright_foreground = "#CAD3F5"
[colors.cursor]
text = "#24273A"
cursor = "#F4DBD6"
[colors.vi_mode_cursor]
text = "#24273A"
cursor = "#B7BDF8"
[colors.search.matches]
foreground = "#24273A"
background = "#A5ADCB"
[colors.search.focused_match]
foreground = "#24273A"
background = "#A6DA95"
[colors.footer_bar]
foreground = "#24273A"
background = "#A5ADCB"
[colors.hints.start]
foreground = "#24273A"
background = "#EED49F"
[colors.hints.end]
foreground = "#24273A"
background = "#A5ADCB"
[colors.selection]
text = "#24273A"
background = "#F4DBD6"
[colors.normal]
black = "#494D64"
red = "#ED8796"
green = "#A6DA95"
yellow = "#EED49F"
blue = "#8AADF4"
magenta = "#F5BDE6"
cyan = "#8BD5CA"
white = "#B8C0E0"
[colors.bright]
black = "#5B6078"
red = "#ED8796"
green = "#A6DA95"
yellow = "#EED49F"
blue = "#8AADF4"
magenta = "#F5BDE6"
cyan = "#8BD5CA"
white = "#A5ADCB"
[colors.dim]
black = "#494D64"
red = "#ED8796"
green = "#A6DA95"
yellow = "#EED49F"
blue = "#8AADF4"
magenta = "#F5BDE6"
cyan = "#8BD5CA"
white = "#B8C0E0"
[[colors.indexed_colors]]
index = 16
color = "#F5A97F"
[[colors.indexed_colors]]
index = 17
color = "#F4DBD6"

View File

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

47
roles/bash/files/.bashrc Normal file
View File

@@ -0,0 +1,47 @@
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
# Load starship prompt if starship is installed
eval "$(starship init bash)"
## Aliases
# Replace ls with eza
alias ls='eza -al --color=always --group-directories-first' # preferred listing
alias la='eza -a --color=always --group-directories-first' # all files and dirs
alias ll='eza -l --color=always --group-directories-first' # long format
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'
# Replace yay with paru
[ ! -x /usr/bin/yay ] && [ -x /usr/bin/paru ] && alias yay='paru'
# Aliases
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 fixpacman="sudo rm /var/lib/pacman/db.lck"
alias grep='grep --color=auto'
alias grubup="sudo update-grub"
alias hw='hwinfo --short'
alias psmem10='ps auxf | sort -nr -k 4 | head -10'
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
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"

12
roles/bash/tasks/main.yml Normal file
View File

@@ -0,0 +1,12 @@
---
- name: "[Bash] Install"
ansible.builtin.package:
name:
- bash
state: latest
become: yes
- name: "[Bash] Configure"
ansible.builtin.copy:
src: "./"
dest: "{{ ansible_user_dir }}/"

248
roles/btop/files/btop.conf Normal file
View File

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

18
roles/btop/tasks/main.yml Normal file
View File

@@ -0,0 +1,18 @@
---
- name: "[Btop] Install"
ansible.builtin.package:
name:
- btop
state: latest
become: true
- name: "[Btop] Create config folder"
ansible.builtin.file:
mode: "0755"
path: "{{ ansible_user_dir }}/.config/btop"
state: directory
- name: "[Btop] Configure"
ansible.builtin.copy:
src: "./"
dest: "{{ ansible_user_dir }}/.config/btop"

View File

@@ -0,0 +1 @@
{"spellcheck":{"dictionaries":["en-GB", "de-DE"],"dictionary":""}}

View File

@@ -0,0 +1,3 @@
{
"lang": "en-US"
}

View File

@@ -0,0 +1,26 @@
{
"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"
}

View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2022 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 @@
{"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}

View File

@@ -0,0 +1,11 @@
/**
* @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
* **/
@import url("https://catppuccin.github.io/discord/dist/catppuccin-macchiato.theme.css");

View File

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

180
roles/fish/files/config.fish Executable file
View File

@@ -0,0 +1,180 @@
## Set values
# Hide welcome message
set fish_greeting
set VIRTUAL_ENV_DISABLE_PROMPT "1"
set -x MANROFFOPT "-c"
set -x MANPAGER "sh -c 'col -bx | bat -l man -p'"
## Environment setup
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
set -p PATH ~/.local/bin
end
end
# Plugin configuration
# Set settings for https://github.com/franciscolourenco/done
set -U __done_min_cmd_duration 10000
set -U __done_notification_urgency_level low
# Starship prompt
if type -q starship && status --is-interactive
starship init fish | source
end
## Functions
# Fish command history
function history
builtin history --show-time='%F %T '
end
function ba --argument filename
cp $filename $filename.bak
end
function cp_bar
cp $argv[1] $argv[2] &
set cpid $last_pid
progress -mp $cpid
kill $cpid &> /dev/null
end
function unzip -a input_file
if test -z "$input_file"
echo "Usage: unzip <filename.zip>"
return 1
end
if test ! -f $input_file
echo "Error: File not found - $input_file"
return 1
end
set folder_name (basename -s .zip $input_file)
command unzip "$input_file" -d "$folder_name" && echo "File '$input_file' successfully extracted to '$folder_name/'"
end
function untar -a input_file
if test -z "$input_file"
echo "Usage: untar <filename.zip>"
return 1
end
if test ! -f $input_file
echo "Error: File not found - $input_file"
return 1
end
set folder_name (string split -m 1 "." $input_file)[1]
mkdir $folder_name
command tar -xvf "$input_file" -C "$folder_name" && echo "File '$input_file' successfully extracted to '$folder_name/'"
end
# Maven
function mvn-init -a groupId artifactId -d "Create a simple maven project"
if test -z "$groupId" -o -z "$artifactId"
echo -e "Usage: mvn-init <groupId> <artifactId>\ngroupId or artifactId missing!"
else
mvn archetype:generate -DgroupId=$groupId -DartifactId=$artifactId -DinteractiveMode=false
end
end
function mvn-run -a mainClass -d "Run your current maven project"
if test -z "$mainClass"
echo -e "Usgae: mvn-run <mainClass> [arguments]\nmainClass missing!"
else
set args ""
for arg in $argv[2..-1]
set args "$args $arg"
end
if test -z $args
mvn clean compile exec:java -Dexec.mainClass="$mainClass"
else
mvn clean compile exec:java -Dexec.mainClass="$mainClass" -Dexec.args="$args"
end
end
end
# Yazi wrapper
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"
end
rm -f -- "$tmp"
end
## Aliases
# Replace ls with eza
if type -q 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 -ald --color=always --group-directories-first --icons .*' # show only dotfiles
end
# Replace cat with bat
if type -q bat
alias cat='bat --style header --style snip --style changes --style header'
end
# Common use
alias :q=exit
alias ipn='ip'
alias nano=nvim
alias cls='clear'
alias please='sudo'
alias ip='ip -color'
alias mkdirs='mkdir --parents'
alias grubup="sudo update-grub"
alias fixpacman="sudo rm /var/lib/pacman/db.lck"
alias tarnow='tar -acf '
alias tarlist='tar -tvf '
alias wget='wget -c '
alias rmpkg='sudo pacman -Rcns '
alias purgepkg="sudo pacman -Rdd "
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 grep='grep --color=auto'
alias fgrep='grep -F --color=auto'
alias egrep='grep -E --color=auto'
alias igrep='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
# Get fastest mirrors
alias mirror="sudo reflector -f 30 -l 30 --number 10 --verbose --save /etc/pacman.d/mirrorlist"
alias mirrord="sudo reflector --latest 50 --number 20 --sort delay --save /etc/pacman.d/mirrorlist"
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
if status --is-interactive
if type -q fastfetch
fastfetch -l arch
else if type -q neofetch
neofetch --ascii_distro arch
end
end

20
roles/fish/tasks/main.yml Normal file
View File

@@ -0,0 +1,20 @@
---
- name: "[Fish] Install"
kewlfft.aur.aur:
name:
- fish
- fish-done
- fastfetch
use: paru
state: present
- name: "[Fish] Create config folder"
ansible.builtin.file:
mode: "0755"
path: "{{ ansible_user_dir }}/.config/fish"
state: directory
- name: "[Fish] Configure"
ansible.builtin.copy:
src: "./"
dest: "{{ ansible_user_dir }}/.config/fish"

View File

@@ -0,0 +1,5 @@
# Devices
device {
name = roccat-roccat-kone-emp-mouse
sensitivity = -0.5
}

12
roles/hypr/files/env.conf Executable file
View File

@@ -0,0 +1,12 @@
# Environment
env = XCURSOR_SIZE,24
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

View File

@@ -0,0 +1,98 @@
# Env
source = ~/.config/hypr/env.conf
# Nvidia
# source = ~/.config/hypr/nvidia.conf
# Keybinds
source = ~/.config/hypr/keybinds.conf
# Monitors/Workspaces
source = ~/.config/hypr/windowrule.conf
# Startup
source = ~/.config/hypr/startup.conf
# Devices
source = ~/.config/hypr/devices.conf
# Input
input {
kb_layout = de
numlock_by_default = 1
follow_mouse = 1
touchpad {
natural_scroll = yes
}
}
# General
general {
gaps_in = 2
gaps_out = 2
border_size = 2
col.active_border = rgba(7dc4e4ee) rgba(7dc4e4ee) 45deg
col.inactive_border = rgba(595959aa)
layout = dwindle
}
# Decoration
decoration {
rounding = 0
blur {
enabled = true
size = 2
passes = 3
#noise = 0
new_optimizations = on
special = false
blurls = rofi
blurls = gtk-layer-shell
}
drop_shadow = yes
shadow_range = 4
shadow_render_power = 3
col.shadow = rgba(1a1a1aee)
}
# Animations
animations {
enabled = yes
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
animation = borderangle, 1, 8, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
}
# Dwindle
dwindle {
pseudotile = yes
preserve_split = yes
}
# Master
master {
new_is_master = true
}
# Gestures
gestures {
workspace_swipe = on
}
# Misc
misc {
#mouse_move_enables_dpms = true
key_press_enables_dpms = true
}

103
roles/hypr/files/keybinds.conf Executable file
View File

@@ -0,0 +1,103 @@
# Keybindings
$mainMod = SUPER
# General
bind = $mainMod, P, pseudo,
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 SHIFT, S, exec, grimblast --freeze copy area
bind = $mainMod CTRL, S, exec, grimblast --freeze copysave area ~/Pictures/Screenshots/"$(date --rfc-3339=seconds)".png
# Media keys
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
binde = , XF86MonBrightnessDown, exec, brightnessctl set 5%-
binde = , XF86MonBrightnessUp, exec, brightnessctl set 5%+
# 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
# Move focus
bind = $mainMod, left, movefocus, l
bind = $mainMod, H, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, L, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, K, movefocus, u
bind = $mainMod, down, movefocus, d
bind = $mainMod, J, movefocus, d
# Scrachtpad
bind = $mainMod CTRL, 2, togglespecialworkspace,
bind = $mainMod CTRL, 1, movetoworkspace, special
# Move window
bind = $mainMod SHIFT, left, movewindow, l
bind = $mainMod SHIFT, H, movewindow, l
bind = $mainMod SHIFT, right, movewindow, r
bind = $mainMod SHIFT, L, movewindow, r
bind = $mainMod SHIFT, up, movewindow, u
bind = $mainMod SHIFT, K, movewindow, u
bind = $mainMod SHIFT, down, movewindow, d
bind = $mainMod SHIFT, J, movewindow, d
bindm = $mainMod, mouse:272, movewindow
# Resize windows
binde = $mainMod CTRL, left, resizeactive, -20 0
binde = $mainMod CTRL, h, resizeactive, -20 0
binde = $mainMod CTRL, right, resizeactive, 20 0
binde = $mainMod CTRL, l, resizeactive, 20 0
binde = $mainMod CTRL, up, resizeactive, 0 -20
binde = $mainMod CTRL, k, resizeactive, 0 -20
binde = $mainMod CTRL, down, resizeactive, 0 20
binde = $mainMod CTRL, j, resizeactive, 0 20
bindm = $mainMod, mouse:273, resizewindow
# Move active window to a workspace
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# Switch workspaces
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Scroll through existing workspaces
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1

7
roles/hypr/files/nvidia.conf Executable file
View File

@@ -0,0 +1,7 @@
# Nvidia env
env = GBM_BACKEND,nvidia-drm
env = LIBVA_DRIVER_NAME,nvidia
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
env = __GL_VRR_ALLOWED,1
env = WLR_NO_HARDWARE_CURSORS,1
env = WLR_DRM_NO_ATOMIC,1

View File

@@ -0,0 +1,36 @@
#!/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

@@ -0,0 +1,53 @@
#!/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

@@ -0,0 +1,24 @@
#!/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

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

View File

@@ -0,0 +1,21 @@
#!/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

@@ -0,0 +1,10 @@
#!/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

@@ -0,0 +1,6 @@
#!/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

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

23
roles/hypr/files/startup.conf Executable file
View File

@@ -0,0 +1,23 @@
# First for systray
exec-once = ags -c /home/keule/test/config.js
# Programms
exec-once = armcord
exec-once = nextcloud
exec-once = youtube-music
exec-once = element-desktop
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

@@ -0,0 +1,34 @@
# Monitors
$monitorOne = HDMI-A-1
$monitorTwo = DP-2
$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
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.*$
# Workspace
workspace = 1, monitor:$monitorOne, default:true
workspace = 2, monitor:$monitorOne
workspace = 3, monitor:$monitorTwo, default:true
workspace = 4, monitor:$monitorTwo
workspace = 5, monitor:$monitorThree, default:true
workspace = 6, monitor:$monitorThree

18
roles/hypr/tasks/main.yml Normal file
View File

@@ -0,0 +1,18 @@
---
- name: "[Hyprland] Install"
ansible.builtin.package:
name:
- hyprland
state: latest
become: true
- name: "[Hyprland] Create config folder"
ansible.builtin.file:
mode: "0755"
path: "{{ ansible_user_dir }}/.config/hypr"
state: directory
- name: "[Hyprland] Configure"
ansible.builtin.copy:
src: "./"
dest: "{{ ansible_user_dir }}/.config/hypr"

View File

@@ -0,0 +1,464 @@
[%General]
author=elkrien based on Arc Dark style
comment=Catppuccin-Frappe-Rosewater
spread_menuitems=true
left_tabs=true
mirror_doc_tabs=true
scroll_width=8
attach_active_tab=true
composite=true
menu_shadow_depth=7
tooltip_shadow_depth=0
splitter_width=7
check_size=16
slider_width=4
slider_handle_width=18
slider_handle_length=18
textless_progressbar=false
menubar_mouse_tracking=true
slim_toolbars=false
toolbutton_style=1
x11drag=menubar_and_primary_toolbar
double_click=false
translucent_windows=false
blurring=false
popup_blurring=true
opaque=kaffeine,kmplayer,subtitlecomposer,kdenlive,vlc,smplayer,smplayer2,avidemux,avidemux2_qt4,avidemux3_qt4,avidemux3_qt5,kamoso,QtCreator,VirtualBox,trojita,dragon,digikam,qmplay2
group_toolbar_buttons=false
vertical_spin_indicators=false
fill_rubberband=false
spread_progressbar=true
merge_menubar_with_toolbar=true
small_icon_size=16
large_icon_size=32
button_icon_size=16
scroll_arrows=false
iconless_pushbutton=true
toolbar_icon_size=16
combo_as_lineedit=true
button_contents_shift=false
groupbox_top_label=true
inline_spin_indicators=true
joined_inactive_tabs=false
layout_spacing=2
submenu_overlap=0
tooltip_delay=-1
animate_states=false
transient_scrollbar=true
alt_mnemonic=true
combo_menu=true
layout_margin=4
no_window_pattern=false
respect_DE=true
scroll_min_extent=36
scrollable_menu=false
scrollbar_in_view=false
spin_button_width=16
submenu_delay=250
tree_branch_line=true
progressbar_thickness=8
click_behavior=0
contrast=1.00
dialog_button_layout=0
drag_from_buttons=false
hide_combo_checkboxes=false
intensity=1.00
no_inactiveness=false
reduce_menu_opacity=0
reduce_window_opacity=10
saturation=1.00
shadowless_popup=false
transient_groove=false
[GeneralColors]
window.color=#303446
base.color=#292C3C
alt.base.color=#292C3C
button.color=#414559
light.color=#51576D
mid.light.color=#51576D
dark.color=#292C3C
mid.color=#292C3C
highlight.color=#F2D5CF
inactive.highlight.color=#F2D5CF
text.color=#C6D0F5
window.text.color=#C6D0F5
button.text.color=#C6D0F5
disabled.text.color=#626880
tooltip.text.color=#C6D0F5
highlight.text.color=#292C3C
link.color=#F2D5CF
link.visited.color=#8CAAEE
[ItemView]
inherits=PanelButtonCommand
frame.element=itemview
interior.element=itemview
frame=true
interior=true
text.iconspacing=3
text.toggle.color=#292C3C
[RadioButton]
inherits=PanelButtonCommand
frame=false
interior.element=radio
[CheckBox]
inherits=PanelButtonCommand
frame=false
interior.element=checkbox
[TreeExpander]
indicator.element=tree
indicator.size=8
[ToolTip]
frame.top=4
frame.right=4
frame.bottom=4
frame.left=4
frame=true
[PanelButtonCommand]
inherits=PanelButtonCommand
interior.element=button
frame.element=button
text.normal.color=#C6D0F5
text.focus.color=#C6D0F5
text.press.color=#292C3C
text.toggle.color=#292C3C
[PanelButtonTool]
inherits=PanelButtonCommand
[DockTitle]
inherits=PanelButtonCommand
interior=false
frame=false
text.margin.top=5
text.margin.bottom=5
text.margin.left=5
text.margin.right=5
indicator.size=0
[Dock]
interior.element=toolbar
frame.element=toolbar
frame=true
interior=true
[GroupBox]
inherits=PanelButtonCommand
interior.element=tabframe
interior=true
frame=false
[Focus]
inherits=PanelButtonCommand
frame=true
frame.element=focus
frame.top=1
frame.bottom=1
frame.left=1
frame.right=1
frame.patternsize=20
[GenericFrame]
inherits=PanelButtonCommand
frame.element=common
frame.top=1
frame.bottom=1
frame.left=1
frame.right=1
[Slider]
inherits=PanelButtonCommand
interior=true
frame.element=slider
interior.element=slider
frame.top=3
frame.bottom=3
frame.left=3
frame.right=3
focusFrame=true
[SliderCursor]
inherits=PanelButtonCommand
interior=true
interior.element=slidercursor
frame=false
[LineEdit]
inherits=PanelButtonCommand
frame.element=lineedit
interior.element=lineedit
[IndicatorSpinBox]
inherits=LineEdit
frame.element=lineedit
interior.element=lineedit
frame.top=0
frame.bottom=2
frame.left=2
frame.right=2
indicator.size=8
[DropDownButton]
inherits=PanelButtonCommand
frame.top=2
frame.bottom=2
frame.left=0
frame.right=1
indicator.size=8
[ToolboxTab]
inherits=PanelButtonCommand
frame.element=tabframe
frame.top=1
frame.bottom=1
frame.left=1
frame.right=1
[Tab]
inherits=PanelButtonCommand
interior.element=tab
frame.element=tab
frame.top=2
frame.bottom=3
frame.left=3
frame.right=3
indicator.size=10
text.normal.color=#626880
text.focus.color=#C6D0F5
text.press.color=#C6D0F5
text.toggle.color=#C6D0F5
focusFrame=true
[TabBarFrame]
inherits=GenericFrame
frame=true
frame.element=tabBarFrame
interior=false
frame.top=4
frame.bottom=4
frame.left=4
frame.right=4
[TabFrame]
inherits=PanelButtonCommand
frame.element=tabframe
interior.element=tabframe
[Dialog]
inherits=TabBarFrame
frame.element=tabframe
interior=false
frame=false
frame.top=1
frame.bottom=1
frame.left=1
frame.right=1
[HeaderSection]
inherits=PanelButtonCommand
interior.element=header
frame.element=header
frame.top=0
frame.bottom=1
frame.left=1
frame.right=1
frame.expansion=0
text.normal.color=#C6D0F5
text.focus.color=#F2D5CF
text.press.color=#C6D0F5
text.toggle.color=#C6D0F5
indicator.element=harrow
[SizeGrip]
inherits=PanelButtonCommand
frame=false
interior=false
indicator.element=resize-grip
indicator.size=0
[Toolbar]
inherits=PanelButtonCommand
interior.element=menubar
frame.element=menubar
frame=true
frame.bottom=4
frame.left=4
frame.right=4
text.normal.color=#C6D0F5
text.focus.color=#C6D0F5
text.press.color=#F2D5CF
text.toggle.color=#F2D5CF
text.bold=false
[MenuBar]
inherits=PanelButtonCommand
frame.element=menubar
interior.element=menubar
frame.bottom=0
text.normal.color=#C6D0F5
frame.expansion=0
text.bold=false
[ToolbarButton]
frame.element=tbutton
interior.element=tbutton
indicator.element=arrow
text.normal.color=#C6D0F5
text.focus.color=#C6D0F5
text.press.color=#292C3C
text.toggle.color=#292C3C
text.bold=false
[Scrollbar]
inherits=PanelButtonCommand
indicator.size=0
interior=false
frame=false
[ScrollbarGroove]
inherits=PanelButtonCommand
interior=false
frame=false
[ScrollbarSlider]
inherits=PanelButtonCommand
interior=false
frame.element=scrollbarslider
frame.top=4
frame.bottom=4
frame.left=4
frame.right=4
[ProgressbarContents]
inherits=PanelButtonCommand
frame=true
frame.element=progress-pattern
interior.element=progress-pattern
frame.top=2
frame.bottom=2
frame.left=2
frame.right=2
[Progressbar]
inherits=PanelButtonCommand
frame.element=progress
interior.element=progress
frame.top=2
frame.bottom=2
frame.left=2
frame.right=2
text.margin=0
text.normal.color=#C6D0F5
text.focus.color=#C6D0F5
text.press.color=#292C3C
text.toggle.color=#292C3C
text.bold=false
frame.expansion=18
[RadioButton]
inherits=PanelButtonCommand
[Menu]
frame.element=menu
interior.element=menu
inherits=PanelButtonCommand
text.press.color=#292C3C
text.toggle.color=#292C3C
text.bold=false
frame.top=3
frame.bottom=3
frame.left=3
frame.right=3
[MenuItem]
inherits=PanelButtonCommand
interior.element=menuitem
indicator.size=8
text.focus.color=#C6D0F5
text.press.color=#C6D0F5
[MenuBarItem]
inherits=PanelButtonCommand
interior.element=menubaritem
frame=false
text.margin.top=3
text.margin.bottom=3
text.margin.left=5
text.margin.right=5
[StatusBar]
inherits=Toolbar
frame.element=toolbar
font.bold=true
text.normal.color=#C6D0F5
frame=true
frame.top=0
frame.bottom=0
[TitleBar]
inherits=PanelButtonCommand
frame=false
interior=false
text.margin.top=2
text.margin.bottom=2
text.margin.left=3
text.margin.right=3
[ComboBox]
inherits=PanelButtonCommand
indicator.size=8
frame.top=3
frame.bottom=3
frame.left=3
frame.right=3
text.margin.top=1
text.margin.bottom=1
text.margin.left=3
text.margin.right=3
text.toggle.color=#C6D0F5
[ToolboxTab]
inherits=PanelButtonCommand
text.normal.color=#C6D0F5
text.press.color=#C6D0F5
text.focus.color=#C6D0F5
[Hacks]
transparent_dolphin_view=false
blur_konsole=true
transparent_ktitle_label=true
transparent_menutitle=true
respect_darkness=true
kcapacitybar_as_progressbar=true
force_size_grip=false
iconless_pushbutton=true
iconless_menu=false
disabled_icon_opacity=100
lxqtmainmenu_iconsize=0
normal_default_pushbutton=true
single_top_toolbar=false
tint_on_mouseover=0
transparent_pcmanfm_sidepane=true
transparent_pcmanfm_view=false
blur_translucent=true
centered_forms=false
kinetic_scrolling=false
middle_click_scroll=false
no_selection_tint=false
noninteger_translucency=false
style_vertical_toolbars=false
blur_only_active_window=false
[Window]
interior=true
interior.element=window
frame.top=0
frame.bottom=0
frame.left=0
frame.right=0

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 146 KiB

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,2 @@
[General]
theme=Catppuccin-Macchiato-Rosewater

View File

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

View File

@@ -0,0 +1,23 @@
MIT License
Copyright (c) 2022 Lxtharia
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.
https://github.com/Lxtharia/minegrub-theme

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,50 @@
I use Arch BTW!
Now with 100% more Linux!
GNU's not UNIX!
Praise Tux!
Wine is not an Emulator!
I am Root!
Still stuck in Vim!
Won't sell your data!
Now with Rust!
Full of Distros!
Do redistribute!
May contain penguins!
Support FOSS devs!
Bailing out!
Everything is a file!
May contain systemd...
Open source!
Made in Finland!
It's not a bug, it's a feature!
It's GNU/Linux!
Sudo rm -rf!
Yes, do as I say!
90% bug free!
Not water proof!
Used by billions!
12345 is a bad password!
Turing complete!
Woah.
I have a suggestion.
pls fix
beep beep
Boop!
Splash!
[Insert splash text here]
Made by "real" people!
Viruses have no power here!
No place like ~
Used in space!
No reboots required!
Case sensitive!
.exe won't work here!
No ads!
May contain spaghetti...
No registry needed!
Forward slashes only!
No DLLs needed!
127.0.0.1 > localhost :)
No caffeine!
Zero calories!
Do not eat!

Binary file not shown.

After

Width:  |  Height:  |  Size: 822 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 549 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 529 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 515 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1012 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 515 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 540 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 552 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 529 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 513 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 515 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 535 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 547 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 553 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 553 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 546 B

View File

@@ -0,0 +1,140 @@
# Global
title-text: ""
desktop-image: "background.png"
# Terminal for Console and Options
terminal-border: "20"
terminal-left: "10%"
terminal-top: "10%+23"
terminal-width: "80%"
terminal-height: "80%"
terminal-box: "term_*.png"
terminal-font: "Monocraft Regular 22"
# Text White
+ boot_menu {
# as we don't have any pixmaps here, it gets aligned strangely
# top pixmap is 17px in height
# left pixmap is 6px in width
# the text needs to be 3 pixels above and 3 pixels to the left
left = 50%-297
top = 40%+14
width = 600
height = 500
item_font = "Minecraft Regular 30"
item_color = "#ffffff"
selected_item_color = "#ffffa0"
item_height = 34
item_padding = 0
item_spacing = 38
scrollbar = false
}
+ boot_menu {
left = 50%-300
top = 40%
width = 600
height = 500
item_font = "Minecraft Regular 30"
item_color = "#383838"
selected_item_color = "#3f3f28"
item_height = 34
item_padding = 0
item_spacing = 38
item_pixmap_style = "item_*.png"
selected_item_pixmap_style = "selected_item_*.png"
scrollbar = false
}
+ image {
# width of the static bottom bar image is 744
left = 50%-372
# n is amount of boot options (each element is (42 height + 30 spacing) = 72px in height)
# top = 40%+( 72 * N + 26 )
#
### +170 (for 2 boot options)
### +242 (for 3 boot options)
### +314 (for 4 boot options)
### +386 (for 5 boot options)
### +458 (for 6 boot options)
### +530 (for 7 boot options)
###
############### CHANGE VALUE HERE ################
top = 40%+314
### Don't leave spaces in between the value
##################################################
file = "static_bar.png"
}
+ image {
# width of the logo image is 1200, but the center of the logo is at x=400
left = 50%-400
top = 0
file = "logo.png"
}
# TEXT
+ label {
left = 6
top = 100%-31
height = 54
width = 200
text = "Minegrub 2.0.0"
font = "Minecraft Regular 30"
color = "white"
}
# SHADOW
+ label {
left = 9
top = 100%-28
height = 54
width = 200
text = "Minegrub 2.0.0"
font = "Minecraft Regular 30"
color = "#3f3f3f"
}
# TEXT
+ label {
id = "__timeout__"
left = 50%
top = 100%-31
height = 24
width = 50%-6
text = "Joining world in %d seconds"
align = "right"
font = "Minecraft Regular 30"
color = "white"
}
# SHADOW
+ label {
id = "__timeout__"
left = 50%+3
top = 100%-28
height = 24
width = 50%-6
text = "Joining world in %d seconds"
align = "right"
font = "Minecraft Regular 30"
color = "#3f3f3f"
}

View File

@@ -0,0 +1,17 @@
---
- name: "[Minegrub] Install"
ansible.builtin.copy:
src: "./"
dest: "/boot/grub/themes/"
force: false
become: true
- name: "[Minegrub] Configure"
shell: sed -i '/^\(#\)\?GRUB_THEME/ s~.*~GRUB_THEME=/boot/grub/themes/minegrub/theme.txt~' /etc/default/grub
ignore_errors: true
become: true
- name: "[Minegrub] Updating grub"
shell: grub-mkconfig -o /boot/grub/grub.cfg
ignore_errors: true
become: true

509
roles/nvim/files/init.lua Executable file
View File

@@ -0,0 +1,509 @@
--- Set Leader Key (Needs to be set before the plugins are loaded/required)
vim.g.mapleader = ' '
vim.g.maplocalleader = ' '
--- Plugin Manager
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
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]]
end,
},
-- Syntax highlighting support
"elkowar/yuck.vim",
"fladson/vim-kitty",
-- Use "gc" to comment visual regions/lines
{ "numToStr/Comment.nvim", opts = {} },
-- Detect tabstop and shiftwidth automatically
-- "tpope/vim-sleuth",
-- Add indentation guides even on blank lines ???
{
"lukas-reineke/indent-blankline.nvim",
main = "ibl",
opts = {},
},
-- Status line
{
"nvim-lualine/lualine.nvim",
opts = {
options = {
icons_enabled = true,
theme = "palenight",
component_separators = "|",
section_separators = "",
},
},
},
-- LSP (Configuration under "lspconfig")
{
"neovim/nvim-lspconfig",
dependencies = {
-- Automatically install LSPs to stdpath for neovim
{ "williamboman/mason.nvim", config = true },
"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!
"folke/neodev.nvim",
},
},
-- Autocomplete
{
"hrsh7th/nvim-cmp",
dependencies = {
-- Snippet Engine & its associated nvim-cmp source
'L3MON4D3/LuaSnip',
'saadparwaiz1/cmp_luasnip',
-- Adds LSP completion capabilities
'hrsh7th/cmp-nvim-lsp',
-- Adds a number of user-friendly snippets
'rafamadriz/friendly-snippets',
},
},
-- Show available command
{
"folke/which-key.nvim",
event = "VeryLazy",
init = function()
vim.o.timeout = true
vim.o.timeoutlen = 300
end,
opts = {}
},
-- Fuzzy Finder (files, lsp, etc)
{
"nvim-telescope/telescope.nvim",
branch = "0.1.x",
dependencies = {
"nvim-lua/plenary.nvim",
{
'nvim-telescope/telescope-fzf-native.nvim',
-- NOTE: If you are having trouble with this installation,
-- refer to the README for telescope-fzf-native for more instructions.
build = 'make',
cond = function()
return vim.fn.executable 'make' == 1
end,
},
},
},
-- Highlight, edit, and navigate code
{
'nvim-treesitter/nvim-treesitter',
dependencies = {
'nvim-treesitter/nvim-treesitter-textobjects',
},
build = ':TSUpdate',
},
-- Git
"tpope/vim-fugitive",
--"tpope/vim-rhubarb",
{
"lewis6991/gitsigns.nvim",
opts = {
-- See `:help gitsigns.txt`
signs = {
add = { text = "+" },
change = { text = "~" },
delete = { text = "_" },
topdelete = { text = "" },
changedelete = { text = "~" },
},
on_attach = function(bufnr)
vim.keymap.set("n", "<leader>hp", require("gitsigns").preview_hunk, { buffer = bufnr, desc = "Preview git hunk" })
-- don't override the built-in and fugitive keymaps
local gs = package.loaded.gitsigns
vim.keymap.set({ "n", "v" }, "]c", function()
if vim.wo.diff then return "]c" end
vim.schedule(function() gs.next_hunk() end)
return "<Ignore>"
end, { expr = true, buffer = bufnr, desc = "Jump to next hunk" })
vim.keymap.set({ "n", "v" }, "[c", function()
if vim.wo.diff then return "[c" end
vim.schedule(function() gs.prev_hunk() end)
return "<Ignore>"
end, { expr = true, buffer = bufnr, desc = "Jump to previous hunk" })
end,
},
},
})
-- Tab
vim.opt.tabstop = 2
vim.opt.softtabstop = 2
vim.opt.shiftwidth = 2
vim.opt.expandtab = true
--- Show line numbers
vim.opt.number = true
--- Relative line numbers
vim.opt.relativenumber = true
--- Go to next/previous line
vim.opt.whichwrap = "<,>,[,]"
--- Enable mouse
vim.opt.mouse = "a"
--- Sync clipboard with OS
vim.opt.clipboard = "unnamedplus"
--- Enable break indent
vim.opt.breakindent = true
--- Save undo history
vim.opt.undofile = true
--- Case-insensetive search
vim.opt.ignorecase = true
vim.opt.smartcase = true
--- Keep signcolum
vim.wo.signcolumn = "yes"
--- Set completeopt to have a better completion experience
vim.opt.completeopt = "menuone,noselect"
--- [[ Basic Keymaps ]]
-- Center view when jumping have the view
vim.keymap.set("n", "<C-d>", "<C-d>zz")
vim.keymap.set("n", "<C-u>", "<C-u>zz")
-- Center view when search
vim.keymap.set("n", "n", "nzz")
vim.keymap.set("n", "N", "Nzz")
-- Create file or directory
vim.keymap.set('n', '<Leader>cf', [[:e <C-R>=expand("%:h") .. '/'<CR>]],
{ desc = "[f] Create file", noremap = true })
vim.keymap.set('n', '<Leader>cd', [[:!mkdir <C-R>=expand("%:p:h") .. '/'<CR>]],
{ desc = "[d] Create directory", noremap = true })
-- Open explorer
vim.keymap.set("n", "<leader>oe", ":Ex<CR>", { desc = "[e] Open the explorer" })
-- Keymaps for better default experience
vim.keymap.set({ "n", "v" }, "<Space>", "<Nop>", { silent = true })
-- Remap for dealing with word wrap
vim.keymap.set("n", "k", "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
vim.keymap.set("n", "j", "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
-- Change Tab/Window Focus
vim.keymap.set("n", "<C-h>", "<C-W>h")
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")
--- [[ Highlight on yank ]]
-- See `:help vim.highlight.on_yank()`
local highlight_group = vim.api.nvim_create_augroup("YankHighlight", { clear = true })
vim.api.nvim_create_autocmd("TextYankPost", {
callback = function()
vim.highlight.on_yank()
end,
group = highlight_group,
pattern = "*",
})
--- [[ Configure Telescope ]]
-- See `:help telescope` and `:help telescope.setup()`
require("telescope").setup {
defaults = {
mappings = {
i = {
["<C-u>"] = false,
["<C-d>"] = false,
},
},
},
}
-- Enable telescope fzf native, if installed
pcall(require("telescope").load_extension, "fzf")
-- See `:help telescope.builtin`
vim.keymap.set("n", "<leader>?", require("telescope.builtin").oldfiles, { desc = "[?] Find recently opened files" })
vim.keymap.set("n", "<leader><space>", require("telescope.builtin").buffers, { desc = "[ ] Find existing buffers" })
vim.keymap.set("n", "<leader>/", function()
-- You can pass additional configuration to telescope to change theme, layout, etc.
require("telescope.builtin").current_buffer_fuzzy_find(require("telescope.themes").get_dropdown {
winblend = 10,
previewer = false,
})
end, { desc = "[/] Fuzzily search in current buffer" })
vim.keymap.set("n", "<leader>gf", require("telescope.builtin").git_files, { desc = "Search [G]it [F]iles" })
vim.keymap.set("n", "<leader>sf", require("telescope.builtin").find_files, { desc = "[S]earch [F]iles" })
vim.keymap.set("n", "<leader>sh", require("telescope.builtin").help_tags, { desc = "[S]earch [H]elp" })
vim.keymap.set("n", "<leader>sw", require("telescope.builtin").grep_string, { desc = "[S]earch current [W]ord" })
vim.keymap.set("n", "<leader>sg", require("telescope.builtin").live_grep, { desc = "[S]earch by [G]rep" })
vim.keymap.set("n", "<leader>sd", require("telescope.builtin").diagnostics, { desc = "[S]earch [D]iagnostics" })
vim.keymap.set("n", "<leader>sr", require("telescope.builtin").resume, { desc = "[S]earch [R]esume" })
--- [[ Configure Treesitter ]]
-- See `:help nvim-treesitter`
-- Defer Treesitter setup after first render to improve startup time of "nvim {filename}"
vim.defer_fn(function()
require("nvim-treesitter.configs").setup {
-- Add languages to be installed here that you want installed for treesitter
ensure_installed = { "c", "cpp", "go", "lua", "python", "rust", "tsx", "javascript", "typescript", "vimdoc", "vim" },
-- Autoinstall languages that are not installed. Defaults to false (but you can change for yourself!)
auto_install = false,
highlight = { enable = true },
indent = { enable = true },
incremental_selection = {
enable = true,
keymaps = {
init_selection = "<c-space>",
node_incremental = "<c-space>",
scope_incremental = "<c-s>",
node_decremental = "<M-space>",
},
},
textobjects = {
select = {
enable = true,
lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim
keymaps = {
-- You can use the capture groups defined in textobjects.scm
["aa"] = "@parameter.outer",
["ia"] = "@parameter.inner",
["af"] = "@function.outer",
["if"] = "@function.inner",
["ac"] = "@class.outer",
["ic"] = "@class.inner",
},
},
move = {
enable = true,
set_jumps = true, -- whether to set jumps in the jumplist
goto_next_start = {
["]m"] = "@function.outer",
["]]"] = "@class.outer",
},
goto_next_end = {
["]M"] = "@function.outer",
["]["] = "@class.outer",
},
goto_previous_start = {
["[m"] = "@function.outer",
["[["] = "@class.outer",
},
goto_previous_end = {
["[M"] = "@function.outer",
["[]"] = "@class.outer",
},
},
swap = {
enable = true,
swap_next = {
["<leader>a"] = "@parameter.inner",
},
swap_previous = {
["<leader>A"] = "@parameter.inner",
},
},
},
}
end, 0)
-- Diagnostic keymaps
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, { desc = "Go to previous diagnostic message" })
vim.keymap.set("n", "]d", vim.diagnostic.goto_next, { desc = "Go to next diagnostic message" })
vim.keymap.set("n", "<leader>e", vim.diagnostic.open_float, { desc = "Open floating diagnostic message" })
vim.keymap.set("n", "<leader>q", vim.diagnostic.setloclist, { desc = "Open diagnostics list" })
--- [[ Configure LSP ]]
-- This function gets run when an LSP connects to a particular buffer.
local on_attach = function(_, bufnr)
-- Sets the mode, buffer and description for us each time.
local nmap = function(keys, func, desc)
if desc then
desc = "LSP: " .. desc
end
vim.keymap.set("n", keys, func, { buffer = bufnr, desc = desc })
end
nmap("<leader>rn", vim.lsp.buf.rename, "[R]e[n]ame")
nmap("<leader>ca", vim.lsp.buf.code_action, "[C]ode [A]ction")
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("<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
nmap("K", vim.lsp.buf.hover, "Hover Documentation")
nmap("<C-k>", vim.lsp.buf.signature_help, "Signature Documentation")
-- Lesser used LSP functionality
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>wl", function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, "[W]orkspace [L]ist Folders")
-- Create a command `:Format` local to the LSP buffer
vim.api.nvim_buf_create_user_command(bufnr, "Format", function(_)
vim.lsp.buf.format()
end, { desc = "Format current buffer with LSP" })
-- Auto format on save
vim.cmd [[autocmd BufWritePre <buffer> lua vim.lsp.buf.format()]]
-- or vim.cmd [[autocmd BufWritePre * lua vim.lsp.buf.format()]]
end
-- document existing key chains
require("which-key").register({
["<leader>c"] = { name = "[C]ode", _ = "which_key_ignore" },
["<leader>d"] = { name = "[D]ocument", _ = "which_key_ignore" },
["<leader>g"] = { name = "[G]it", _ = "which_key_ignore" },
["<leader>h"] = { name = "More git", _ = "which_key_ignore" },
["<leader>r"] = { name = "[R]ename", _ = "which_key_ignore" },
["<leader>s"] = { name = "[S]earch", _ = "which_key_ignore" },
["<leader>w"] = { name = "[W]orkspace", _ = "which_key_ignore" },
})
-- Enable the following language servers
-- If you want to override the default filetypes that your language server will attach to you can
-- define the property "filetypes" to the map in question.
local servers = {
rust_analyzer = {},
lemminx = {},
yamlls = {},
bashls = {},
jsonls = {},
clangd = {},
cssls = {},
jdtls = {},
html = {},
lua_ls = {
Lua = {
workspace = { checkThirdParty = false },
telemetry = { enable = false },
},
},
}
-- Setup neovim lua configuration
require("neodev").setup()
-- nvim-cmp supports additional completion capabilities, so broadcast that to servers
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = require("cmp_nvim_lsp").default_capabilities(capabilities)
-- Ensure the servers above are installed
local mason_lspconfig = require "mason-lspconfig"
mason_lspconfig.setup {
ensure_installed = vim.tbl_keys(servers),
}
mason_lspconfig.setup_handlers {
function(server_name)
require("lspconfig")[server_name].setup {
capabilities = capabilities,
on_attach = on_attach,
settings = servers[server_name],
filetypes = (servers[server_name] or {}).filetypes,
}
end
}
--- [[ Configure nvim-cmp ]]
-- See `:help cmp`
local cmp = require "cmp"
local luasnip = require "luasnip"
require("luasnip.loaders.from_vscode").lazy_load()
luasnip.config.setup {}
cmp.setup {
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
mapping = cmp.mapping.preset.insert {
["<C-n>"] = cmp.mapping.select_next_item(),
["<C-p>"] = cmp.mapping.select_prev_item(),
["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete {},
["<CR>"] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Replace,
select = true,
},
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_locally_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.locally_jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { "i", "s" }),
},
sources = {
{ name = "nvim_lsp" },
{ name = "luasnip" },
},
}
-- The line beneath this is called `modeline`. See `:help modeline`
-- vim: ts=2 sts=2 sw=2 et

18
roles/nvim/tasks/main.yml Normal file
View File

@@ -0,0 +1,18 @@
---
- name: "[Nvim] Install"
ansible.builtin.package:
name:
- neovim
state: latest
become: true
- name: "[Nvim] Create config folder"
ansible.builtin.file:
mode: "0755"
path: "{{ ansible_user_dir }}/.config/nvim"
state: directory
- name: "[Nvim] Configure"
ansible.builtin.copy:
src: "./"
dest: "{{ ansible_user_dir }}/.config/nvim"

View File

@@ -0,0 +1,139 @@
[Autologin]
# Whether sddm should automatically log back into sessions when they exit
Relogin=false
# Name of session file for autologin session (if empty try last logged in)
Session=
# Username for autologin session
User=
[General]
# Which display server should be used.
# Valid values are: x11, x11-user, wayland. Wayland support is experimental
DisplayServer=x11
# Comma-separated list of environment variables to be set
GreeterEnvironment=
# Halt command
HaltCommand=/usr/bin/systemctl poweroff
# Input method module
InputMethod=
# Comma-separated list of Linux namespaces for user session to enter
Namespaces=
# Initial NumLock state. Can be on, off or none.
# If property is set to none, numlock won't be changed
# NOTE: Currently ignored if autologin is enabled.
Numlock=on
# Reboot command
RebootCommand=/usr/bin/systemctl reboot
[Theme]
# Current theme name
Current=catppuccin-macchiato
# Cursor size used in the greeter
CursorSize=24
# Cursor theme used in the greeter
CursorTheme=Breeze
# Number of users to use as threshold
# above which avatars are disabled
# unless explicitly enabled with EnableAvatars
DisableAvatarsThreshold=7
# Enable display of custom user avatars
EnableAvatars=true
# Global directory for user avatars
# The files should be named <username>.face.icon
FacesDir=/usr/share/sddm/faces
# Font used in the greeter
Font=CaskaydiaCove Nerd Font 12
# Theme directory path
ThemeDir=/usr/share/sddm/themes
[Users]
# Default $PATH for logged in users
DefaultPath=/usr/local/sbin:/usr/local/bin:/usr/bin
# Comma-separated list of shells.
# Users with these shells as their default won't be listed
HideShells=
# Comma-separated list of users that should not be listed
HideUsers=
# Maximum user id for displayed users
MaximumUid=60513
# Minimum user id for displayed users
MinimumUid=1000
# Remember the session of the last successfully logged in user
RememberLastSession=true
# Remember the last successfully logged in user
RememberLastUser=true
# When logging in as the same user twice, restore the original session, rather than create a new one
ReuseSession=true
[Wayland]
# Path of the Wayland compositor to execute when starting the greeter
CompositorCommand=weston --shell=fullscreen-shell.so
# Enable Qt's automatic high-DPI scaling
EnableHiDPI=true
# Path to a script to execute when starting the desktop session
SessionCommand=/usr/share/sddm/scripts/wayland-session
# Comma-separated list of directories containing available Wayland sessions
SessionDir=/usr/local/share/wayland-sessions,/usr/share/wayland-sessions
# Path to the user session log file
SessionLogFile=.local/share/sddm/wayland-session.log
[X11]
# Path to a script to execute when starting the display server
DisplayCommand=/usr/share/sddm/scripts/Xsetup
# Path to a script to execute when stopping the display server
DisplayStopCommand=/usr/share/sddm/scripts/Xstop
# Enable Qt's automatic high-DPI scaling
EnableHiDPI=true
# Arguments passed to the X server invocation
ServerArguments=-nolisten tcp
# Path to X server binary
ServerPath=/usr/bin/X
# Path to a script to execute when starting the desktop session
SessionCommand=/usr/share/sddm/scripts/Xsession
# Comma-separated list of directories containing available X sessions
SessionDir=/usr/local/share/xsessions,/usr/share/xsessions
# Path to the user session log file
SessionLogFile=.local/share/sddm/xorg-session.log
# Path to Xephyr binary
XephyrPath=/usr/bin/Xephyr

14
roles/sddm/tasks/main.yml Normal file
View File

@@ -0,0 +1,14 @@
---
- name: "[SDDM] Install"
ansible.builtin.package:
name:
- sddm
state: latest
become: true
- name: "[SDDM] Configure"
ansible.builtin.copy:
mode: 0755
src: "./"
dest: "/etc/"
become: true

View File

@@ -0,0 +1,147 @@
## FIRST LINE/ROW: Info & Status
# First param ─┌
[username]
format = " [╭─$user]($style)@"
show_always = true
style_root = "bold red"
style_user = "bold red"
# Second param
[hostname]
disabled = false
format = "[$hostname]($style) in "
ssh_only = false
style = "bold dimmed red"
trim_at = "-"
# Third param
[directory]
style = "purple"
truncate_to_repo = true
truncation_length = 0
truncation_symbol = "repo: "
# Fourth param
[sudo]
disabled = false
# Before all the version info (python, nodejs, php, etc.)
[git_status]
ahead = "⇡${count}"
behind = "⇣${count}"
deleted = "x"
diverged = "⇕⇡${ahead_count}⇣${behind_count}"
style = "white"
# Last param in the first line/row
[cmd_duration]
disabled = false
format = "took [$duration]($style)"
min_time = 1
## SECOND LINE/ROW: Prompt
# Somethere at the beginning
[battery]
charging_symbol = ""
disabled = true
discharging_symbol = ""
full_symbol = ""
[[battery.display]] # "bold red" style when capacity is between 0% and 10%
disabled = false
style = "bold red"
threshold = 15
[[battery.display]] # "bold yellow" style when capacity is between 10% and 30%
disabled = true
style = "bold yellow"
threshold = 50
[[battery.display]] # "bold green" style when capacity is between 10% and 30%
disabled = true
style = "bold green"
threshold = 80
# Prompt: optional param 1
[time]
disabled = true
format = " 🕙 $time($style)\n"
style = "bright-white"
time_format = "%T"
# Prompt: param 2
[character]
error_symbol = " [×](bold red)"
success_symbol = " [╰─λ](bold red)"
# SYMBOLS
[status]
disabled = false
format = '[\[$symbol$status_common_meaning$status_signal_name$status_maybe_int\]]($style)'
map_symbol = true
pipestatus = true
symbol = "🔴"
[aws]
symbol = " "
[conda]
symbol = " "
[dart]
symbol = " "
[docker_context]
symbol = " "
[elixir]
symbol = " "
[elm]
symbol = " "
[git_branch]
symbol = " "
[golang]
symbol = " "
[hg_branch]
symbol = " "
[java]
symbol = " "
[julia]
symbol = " "
[nim]
symbol = " "
[nix_shell]
symbol = " "
[nodejs]
symbol = " "
[package]
symbol = " "
[perl]
symbol = " "
[php]
symbol = " "
[python]
symbol = " "
[ruby]
symbol = " "
[rust]
symbol = " "
[swift]
symbol = "ﯣ "

View File

@@ -0,0 +1,12 @@
---
- name: "[Starship] Install"
ansible.builtin.package:
name:
- starship
state: latest
become: true
- name: "[Starship] Configure"
ansible.builtin.copy:
src: "./"
dest: "{{ ansible_user_dir }}/.config"

View File

@@ -0,0 +1,10 @@
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

@@ -0,0 +1,19 @@
---
- 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

@@ -0,0 +1,98 @@
#
# /etc/pacman.conf
#
# See the pacman.conf(5) manpage for option and repository directives
#
# GENERAL OPTIONS
#
[options]
# The following paths are commented out with their default values listed.
# If you wish to use different paths, uncomment and update the paths.
#RootDir = /
#DBPath = /var/lib/pacman/
#CacheDir = /var/cache/pacman/pkg/
#LogFile = /var/log/pacman.log
#GPGDir = /etc/pacman.d/gnupg/
#HookDir = /etc/pacman.d/hooks/
HoldPkg = pacman glibc
#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#CleanMethod = KeepInstalled
Architecture = auto
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg =
#IgnoreGroup =
#NoUpgrade =
#NoExtract =
# Misc options
#UseSyslog
Color
ILoveCandy
#NoProgressBar
CheckSpace
#VerbosePkgLists
ParallelDownloads = 5
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.
SigLevel = Required DatabaseOptional
LocalFileSigLevel = Optional
#RemoteFileSigLevel = Required
# NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Arch Linux
# packagers with `pacman-key --populate archlinux`.
#
# REPOSITORIES
# - can be defined here or included from another file
# - pacman will search repositories in the order defined here
# - local/custom mirrors can be added here or in separate files
# - repositories listed first will take precedence when packages
# have identical names, regardless of version number
# - URLs will have $repo replaced by the name of the current repo
# - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
# [repo-name]
# Server = ServerName
# Include = IncludePath
#
# The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo.
#
# The testing repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
#[core-testing]
#Include = /etc/pacman.d/mirrorlist
[core]
Include = /etc/pacman.d/mirrorlist
#[extra-testing]
#Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the multilib repositories as required here.
#[multilib-testing]
#Include = /etc/pacman.d/mirrorlist
[multilib]
Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs

View File

@@ -0,0 +1,269 @@
---
- name: "[Arch] Configure pacman"
ansible.builtin.copy:
mode: 0644
src: "pacman.conf"
dest: "/etc/"
become: true
tags:
- pacman
- name: "[Arch] Update packages"
community.general.pacman:
update_cache: true
upgrade: true
state: latest
become: true
tags:
- pacman
- name: "[Arch] Install default packages"
kewlfft.aur.aur:
name:
- networkmanager
- networkmanager-openvpn
- network-manager-applet
- inotify-tools
- cifs-utils
- ntfs-3g
- openssh
- upower
- unzip
- less
- curl
- wget
- awk
- zip
- tar
- eza
- bat
- jq
use: paru
state: present
tags:
- default_pkgs
- name: "[Arch] Install programming packages"
kewlfft.aur.aur:
name:
- jdk-openjdk
- maven
- rustup
- npm
use: paru
state: present
tags:
- programming_pkgs
when: system != 'server'
- name: "[Arch] Configure rustup"
command: rustup default stable
tags:
- programming_pkgs
when: system != 'server'
- name: "[Arch] Install desktop packages"
kewlfft.aur.aur:
name:
# Fonts
- noto-fonts
- noto-fonts-cjk
- noto-fonts-emoji
- ttf-font-awesome
- ttf-firacode-nerd
# Pipewire
- pipewire
- wireplumber
- pipewire-alsa
- pipewire-audio
- pipewire-jack
- pipewire-pulse
- gst-plugin-pipewire
# Bluetooth
- bluez
- bluez-utils
- blueman
# Printing
- cups
- cups-pdf
# Theming
#- qt5ct
- nwg-look
# Icon Themes
- papirus-icon-theme
# Cursor Themes
- rose-pine-hyprcursor
- xcursor-breeze
# Themes
- catppuccin-gtk-theme-frappe
- catppuccin-gtk-theme-latte
- catppuccin-gtk-theme-macchiato
- catppuccin-gtk-theme-mocha
# Misc
- brightnessctl
#- wlr-randr
- playerctl
- libnotify
- mediainfo
- hyprpicker
- swww
- swayidle
- grimblast-git
- cliphist
- wl-clipboard
- polkit-kde-agent
- xdg-desktop-portal-hyprland
- gnome-keyring
use: paru
state: present
tags:
- desktop_pkgs
when: system != 'server'
- name: "[Arch] Install desktop applications"
kewlfft.aur.aur:
name:
- youtube-music
- libreoffice-fresh
- nextcloud-client
- youtube-music
- waypaper-git
- vscodium-bin
- pavucontrol
- hyprpicker
- brave-bin
- obsidian
- discord
- yt-dlp
- nvtop
- nemo
- mpv
# Device configuration
#- openrazer-daemon
#- openrgb
#- piper
# AMD Stats
#- amdgpu_top
# Character map
#- gucharmap
# Calculator
#- galculator
use: paru
state: present
tags:
- desktop_apps
when: system != 'server'
- name: "[Arch] Install additional desktop packages"
kewlfft.aur.aur:
name:
- steam
- lutris
# Wine
- wine-staging
- giflib
- lib32-giflib
- libpng
- lib32-libpng
- libldap
- lib32-libldap
- gnutls
- lib32-gnutls
- mpg123
- lib32-mpg123
- openal
- lib32-openal
- v4l-utils
- lib32-v4l-utils
- libpulse
- lib32-libpulse
- libgpg-error
- lib32-libgpg-error
- alsa-plugins
- lib32-alsa-plugins
- alsa-lib
- lib32-alsa-lib
- libjpeg-turbo
- lib32-libjpeg-turbo
- sqlite
- lib32-sqlite
- libxcomposite
- lib32-libxcomposite
- libxinerama
- lib32-libgcrypt
- libgcrypt
- lib32-libxinerama
- ncurses
- lib32-ncurses
- ocl-icd
- lib32-ocl-icd
- libxslt
- lib32-libxslt
- libva
- lib32-libva
- gtk3
- lib32-gtk3
- gst-plugins-base-libs
- lib32-gst-plugins-base-libs
- vulkan-icd-loader
- lib32-vulkan-icd-loader
use: paru
state: present
tags:
- desktop_pkgs
when: system == 'desktop_full'
- name: Gather GPU info
shell: "lspci | grep -i vga"
register: gpu_info
tags:
- desktop_pkgs
when: system == 'desktop_full'
- name: "[Arch] Install AMD packages"
kewlfft.aur.aur:
name:
- lib32-mesa
- vulkan-radeon
- lib32-vulkan-radeon
use: paru
state: present
when: "system == 'desktop_full' and 'Advanced Micro Devices' in gpu_info.stdout"
- name: "[Arch] Install Intel packages"
kewlfft.aur.aur:
name:
- lib32-mesa
- vulkan-intel
- lib32-vulkan-intel
use: paru
state: present
tags:
- desktop_pkgs
when: "system == 'desktop_full' and 'Intel Corporation' in gpu_info.stdout"
- name: "[Arch] Install Nvidia packages"
kewlfft.aur.aur:
name:
- nvidia-dkms
- nvidia-utils
- lib32-nvidia-utils
- nvidia-settings
use: paru
state: present
tags:
- desktop_pkgs
when: "system == 'desktop_full' and 'NVIDIA' in gpu_info.stdout"
- name: "[Arch] Enable services"
ansible.builtin.service:
name: "{{ item }}"
enabled: true
with_items:
- bluetooth
- cups
- sddm
tags:
- desktop_services
when: "system == 'desktop'"
become: true

View File

@@ -0,0 +1,11 @@
---
- name: "[System] Checking for Distribution Config: {{ ansible_distribution }}"
ansible.builtin.stat:
path: "{{ role_path }}/tasks/{{ ansible_distribution }}.yml"
register: system_distribution_config
tags:
- system
- name: "[System] Run Tasks: {{ ansible_distribution }}"
ansible.builtin.include_tasks: "{{ ansible_distribution }}.yml"
when: system_distribution_config.stat.exists

View File

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

View File

@@ -0,0 +1,39 @@
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 file = io.open(file_name, "w")
if file then
file:write(tostring(folder.cwd))
file:close()
end
end)
local jump_bookmark = ya.sync(function(state, idx)
local io = require("io")
local file = io.open(file_name, "r")
if file then
local line = file:read("*line")
file:close()
ya.manager_emit("cd", { line })
ya.manager_emit("arrow", { -99999999 })
end
end)
return {
entry = function(_, args)
local action = args[1]
if not action then
return
end
if action == "save" then
save_bookmark()
elseif action == "jump" then
jump_bookmark()
end
end
}

View File

@@ -0,0 +1,4 @@
[manager]
sort_dir_first = true
show_hidden = true
show_symlink = true

18
roles/yazi/tasks/main.yml Normal file
View File

@@ -0,0 +1,18 @@
---
- name: "[Yazi] Install"
ansible.builtin.package:
name:
- yazi
state: latest
become: true
- name: "[Yazi] Create config folder"
ansible.builtin.file:
mode: "0755"
path: "{{ ansible_user_dir }}/.config/yazi"
state: directory
- name: "[Yazi] Configure"
ansible.builtin.copy:
src: "./"
dest: "{{ ansible_user_dir }}/.config/yazi"