Init
117
.config/eww/eww.scss
Executable file
@@ -0,0 +1,117 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* Catppuccin Frappe palette
|
||||||
|
* Maintainer: rubyowo
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
$base: #303446;
|
||||||
|
$mantle: #292c3c;
|
||||||
|
$crust: #232634;
|
||||||
|
|
||||||
|
$text: #c6d0f5;
|
||||||
|
$subtext0: #a5adce;
|
||||||
|
$subtext1: #b5bfe2;
|
||||||
|
|
||||||
|
$surface0: #414559;
|
||||||
|
$surface1: #51576d;
|
||||||
|
$surface2: #626880;
|
||||||
|
|
||||||
|
$overlay0: #737994;
|
||||||
|
$overlay1: #838ba7;
|
||||||
|
$overlay2: #949cbb;
|
||||||
|
|
||||||
|
$blue: #8caaee;
|
||||||
|
$lavender: #babbf1;
|
||||||
|
$sapphire: #85c1dc;
|
||||||
|
$sky: #99d1db;
|
||||||
|
$teal: #81c8be;
|
||||||
|
$green: #a6d189;
|
||||||
|
$yellow: #e5c890;
|
||||||
|
$peach: #ef9f76;
|
||||||
|
$maroon: #ea999c;
|
||||||
|
$red: #e78284;
|
||||||
|
$mauve: #ca9ee6;
|
||||||
|
$pink: #f4b8e4;
|
||||||
|
$flamingo: #eebebe;
|
||||||
|
$rosewater: #f2d5cf;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Author: Keule2
|
||||||
|
* Created: 23.09.2023
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*****************/
|
||||||
|
/* Defaults */
|
||||||
|
/*****************/
|
||||||
|
* {
|
||||||
|
border: none;
|
||||||
|
border-radius: 5px;
|
||||||
|
font-family: "FiraCode Nerd Font Mono";
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 13px;
|
||||||
|
color: $text;
|
||||||
|
}
|
||||||
|
|
||||||
|
window {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
tooltip{
|
||||||
|
background: $surface0;
|
||||||
|
border: solid 2px $sapphire;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
padding: 2px;
|
||||||
|
margin: 4px 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget {
|
||||||
|
border: solid 2px $sapphire;
|
||||||
|
background: $surface1;
|
||||||
|
padding: 0px 5px;
|
||||||
|
margin: 2px;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************/
|
||||||
|
/* Root */
|
||||||
|
/*****************/
|
||||||
|
.bar1, .bar2, .bar3{
|
||||||
|
background-color: rgba(65, 69, 89, 0.8);
|
||||||
|
border-top-left-radius: 0px;
|
||||||
|
border-top-right-radius: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.root {
|
||||||
|
margin: 2px;
|
||||||
|
padding: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************/
|
||||||
|
/* Cutom widgets */
|
||||||
|
/*****************/
|
||||||
|
/* Player */
|
||||||
|
.Playing {
|
||||||
|
color: $sapphire;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Session */
|
||||||
|
.session {
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Workspaces */
|
||||||
|
.workspace_entry {
|
||||||
|
padding: 2px 5px;
|
||||||
|
margin: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace_entry.current {
|
||||||
|
background: $overlay0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace_entry_p:hover .workspace_entry{
|
||||||
|
background: $overlay2;
|
||||||
|
}
|
||||||
216
.config/eww/eww.yuck
Executable file
@@ -0,0 +1,216 @@
|
|||||||
|
;; TODO Update workspaces only when workspaces updated
|
||||||
|
;; TODO Camera access, Microphone access,.... -> indicator-mic-cam
|
||||||
|
(defwindow bar1
|
||||||
|
:monitor 0
|
||||||
|
:geometry (geometry :x "0%"
|
||||||
|
:y "0px"
|
||||||
|
:width "100%"
|
||||||
|
:height "35px"
|
||||||
|
:anchor "top center")
|
||||||
|
:stacking "fg"
|
||||||
|
:exclusive true
|
||||||
|
:focusable false
|
||||||
|
|
||||||
|
(content)
|
||||||
|
)
|
||||||
|
|
||||||
|
(defwindow bar2
|
||||||
|
:monitor 1
|
||||||
|
:geometry (geometry :x "0%"
|
||||||
|
:y "0px"
|
||||||
|
:width "100%"
|
||||||
|
:height "35px"
|
||||||
|
:anchor "top center")
|
||||||
|
:stacking "fg"
|
||||||
|
:exclusive true
|
||||||
|
:focusable false
|
||||||
|
|
||||||
|
(content)
|
||||||
|
)
|
||||||
|
|
||||||
|
(defwindow bar3
|
||||||
|
:monitor 2
|
||||||
|
:geometry (geometry :x "0%"
|
||||||
|
:y "0px"
|
||||||
|
:width "100%"
|
||||||
|
:height "35px"
|
||||||
|
:anchor "top center")
|
||||||
|
:stacking "fg"
|
||||||
|
:exclusive true
|
||||||
|
:focusable false
|
||||||
|
|
||||||
|
(content)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
(defwidget content []
|
||||||
|
(centerbox :orientation "h" :class "root"
|
||||||
|
(box :space-evenly false :halign "start"
|
||||||
|
(workspaces)
|
||||||
|
(window_w)
|
||||||
|
)
|
||||||
|
(time :halign "center")
|
||||||
|
(box :space-evenly false :halign "end"
|
||||||
|
(systray :class "widget systray")
|
||||||
|
(player)
|
||||||
|
(cpu)
|
||||||
|
(memory)
|
||||||
|
(network)
|
||||||
|
(battery)
|
||||||
|
(audio)
|
||||||
|
(session)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
;;PLAYER
|
||||||
|
(deflisten MUSIC :initial "" "playerctl -a metadata --follow --format '{\"text\":\"{{artist}} - {{markup_escape(title)}}\", \"state\":\"{{status}}\"}' || true")
|
||||||
|
(defwidget player []
|
||||||
|
(box :class "widget"
|
||||||
|
(eventbox
|
||||||
|
:onclick "playerctl play-pause"
|
||||||
|
:onmiddleclick "playerctl previous"
|
||||||
|
:onrightclick "playerctl next"
|
||||||
|
(label :tooltip "${MUSIC.text}" :class "${MUSIC.state}" :text " ")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
;;CPU
|
||||||
|
(defwidget cpu []
|
||||||
|
(box :class "widget"
|
||||||
|
(label :text "${round(EWW_CPU.avg, 0)}% ")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
;;Memory
|
||||||
|
(defwidget memory []
|
||||||
|
(box :class "widget"
|
||||||
|
(label :text "${round(EWW_RAM.used_mem / (1024*1024*1024), 1)} " :tooltip "${round(EWW_RAM.used_mem_perc, 0)}%")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
;;Network
|
||||||
|
(defpoll IS_WIRELESS :interval "10s" "~/.config/eww/scripts/net.sh iswlan")
|
||||||
|
(defpoll NET_INT :interval "10s" "~/.config/eww/scripts/net.sh getint")
|
||||||
|
(defpoll NET_NAME :interval "10s" "~/.config/eww/scripts/net.sh ssid")
|
||||||
|
(defwidget network []
|
||||||
|
(box :class "widget"
|
||||||
|
(eventbox :onclick "nm-connection-editor & disown"
|
||||||
|
(label :text "${round(EWW_NET[NET_INT].NET_UP / 1000, 1)}kB/s⇡ ${round(EWW_NET[NET_INT].NET_DOWN / 1000, 1)}kB/s⇣ ${IS_WIRELESS? "" : ""}" :tooltip "${NET_INT} ${IS_WIRELESS? ":${NET_NAME}" : ""}")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(defpoll BAT_INFO :interval "1m" "~/.config/eww/scripts/battery.sh")
|
||||||
|
(defwidget battery []
|
||||||
|
(box :class "widget" :visible "${BAT_INFO.has_battery}"
|
||||||
|
(label :text "${BAT_INFO.percentage}"
|
||||||
|
:tooltip "${BAT_INFO.time_remaining}"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(defwindow battery_warning
|
||||||
|
:monitor 0
|
||||||
|
:exclusive "false"
|
||||||
|
:stacking "overlay"
|
||||||
|
:geometry (geometry :anchor "center"
|
||||||
|
:width "10%"
|
||||||
|
:height "10%")
|
||||||
|
(box :class "widget" :orientation "v"
|
||||||
|
(label :text "${BAT_INFO.percentage}!"
|
||||||
|
:tooltip "${BAT_INFO.time_remaining}"
|
||||||
|
)
|
||||||
|
(button :onclick "${EWW_CMD} close battery_warning"
|
||||||
|
(label :text "")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
;;Audio
|
||||||
|
(defpoll DEF_SINK :interval "10s" "~/.config/eww/scripts/audio.sh getdefaultsink")
|
||||||
|
(defpoll IS_MUTED_SOURCE :interval "10s" "~/.config/eww/scripts/audio.sh ismutedsource @DEFAULT_SOURCE@")
|
||||||
|
(defpoll IS_MUTED_SINK :interval "10s" "~/.config/eww/scripts/audio.sh ismutedsink @DEFAULT_SINK@")
|
||||||
|
(defpoll IS_BLUE :interval "10s" "~/.config/eww/scripts/audio.sh isblue @DEFAULT_SINK@")
|
||||||
|
(defpoll VOLUME_SOURCE :interval "10s" "~/.config/eww/scripts/audio.sh getvol @DEFAULT_SOURCE@")
|
||||||
|
(defpoll VOLUME_SINK :interval "10s" "~/.config/eww/scripts/audio.sh getvol @DEFAULT_SINK@")
|
||||||
|
(defwidget audio []
|
||||||
|
(box :class "widget"
|
||||||
|
(eventbox
|
||||||
|
:onclick "${EWW_CMD} open audio_popup"
|
||||||
|
:onmiddleclick "~/.config/eww/scripts/audio.sh mutesink @DEFAULT_SINK@"
|
||||||
|
:onrightclick "~/.config/eww/scripts/audio.sh mutesource @DEFAULT_SOURCE@"
|
||||||
|
:onscroll "~/.config/eww/scripts/audio.sh vol {}"
|
||||||
|
|
||||||
|
(label :text "${IS_MUTED_SINK? " ": "${round(VOLUME_SINK * 100, 0)}%"}${IS_BLUE? "" : ""} ${IS_MUTED_SOURCE? "" : "${round(VOLUME_SOURCE * 100, 0)}%"}"
|
||||||
|
:tooltip "${DEF_SINK}"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(defwindow audio_popup
|
||||||
|
:monitor 0
|
||||||
|
:exclusive "false"
|
||||||
|
:stacking "overlay"
|
||||||
|
:geometry (geometry :anchor "top right")
|
||||||
|
(audio_menu)
|
||||||
|
)
|
||||||
|
|
||||||
|
(defpoll audio_device :interval "10s" "~/.config/eww/scripts/audio.sh getdevices")
|
||||||
|
(defwidget audio_menu []
|
||||||
|
(eventbox :onhoverlost "${EWW_CMD} close audio_popup"
|
||||||
|
(box :class "widget" :orientation "v"
|
||||||
|
(for dev in audio_device
|
||||||
|
(button :onclick "pactl set-default-sink ${dev.id} & ${EWW_CMD} close audio_popup"
|
||||||
|
(label :text "${dev.name == DEF_SINK? "" : ""} ${dev.name}")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
;;Session
|
||||||
|
(defwidget session []
|
||||||
|
(box :class "widget"
|
||||||
|
(eventbox :onclick "swaync-client -t -sw"
|
||||||
|
(label :class "session" :text "")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Time/Date
|
||||||
|
(defpoll TIME :interval "5s" `date +\"%H:%M\"`)
|
||||||
|
(defpoll DATE :interval "1m" `date +\"%d.%m.%Y\"`)
|
||||||
|
|
||||||
|
(defwidget time []
|
||||||
|
(box :class "widget" :space-evenly false
|
||||||
|
(eventbox :onclick "merkuro-calendar & disown"
|
||||||
|
(label :text "${TIME} ${DATE} ")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Active Window Title
|
||||||
|
(deflisten window :initial "..." "sh ~/.config/eww/scripts/get_window_title.sh")
|
||||||
|
(defwidget window_w []
|
||||||
|
(box :class "widget" :visible {window != ""}
|
||||||
|
(label :limit-width 85 :text "${window}")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Workspaces
|
||||||
|
(deflisten workspaces :initial "[]" "bash ~/.config/eww/scripts/get_workspaces.sh")
|
||||||
|
(deflisten current_workspace :initial "1" "bash ~/.config/eww/scripts/get_active_workspace.sh")
|
||||||
|
(defwidget workspaces []
|
||||||
|
(box :class "widget workspaces" :space-evenly false
|
||||||
|
(for workspace in workspaces
|
||||||
|
(eventbox :onclick "hyprctl dispatch workspace ${workspace.id}" :class "workspace_entry_p"
|
||||||
|
(box :class "workspace_entry ${workspace.id == current_workspace ? "current" : ""} ${workspace.windows > 0 ? "occupied" : "empty"}"
|
||||||
|
(label :class "test" :text "${workspace.id}")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
76
.config/eww/scripts/audio.sh
Executable file
@@ -0,0 +1,76 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo "Usage:
|
||||||
|
$0 <action> <sink|source>
|
||||||
|
actions: vol"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -z $1 ]; then
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z $2 ] && [ "$1" != "getdevices" ] && [ "$1" != "getdefaultsink" ]; then
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
vol() {
|
||||||
|
if [ "$1" == "up" ]; then
|
||||||
|
vol="5%+"
|
||||||
|
else
|
||||||
|
vol="5%-"
|
||||||
|
fi
|
||||||
|
|
||||||
|
wpctl set-volume @DEFAULT_SINK@ $vol
|
||||||
|
eww update VOLUME_SINK=$(getvol @DEFAULT_SINK@)
|
||||||
|
}
|
||||||
|
|
||||||
|
getvol() {
|
||||||
|
wpctl get-volume $1 | awk '{print $2}'
|
||||||
|
}
|
||||||
|
|
||||||
|
ismutedsource() {
|
||||||
|
pactl get-source-mute $1 | awk '{print ($2 == "no"? "false" : "true")}'
|
||||||
|
}
|
||||||
|
|
||||||
|
ismutedsink() {
|
||||||
|
pactl get-sink-mute $1 | awk '{print ($2 == "no"? "false" : "true")}'
|
||||||
|
}
|
||||||
|
|
||||||
|
mutesink() {
|
||||||
|
pactl set-sink-mute $1 toggle
|
||||||
|
eww update IS_MUTED_SINK=$(ismutedsink $1)
|
||||||
|
}
|
||||||
|
|
||||||
|
mutesource() {
|
||||||
|
pactl set-source-mute $1 toggle
|
||||||
|
eww update IS_MUTED_SOURCE=$(ismutedsource $1)
|
||||||
|
}
|
||||||
|
|
||||||
|
isblue() {
|
||||||
|
wpctl inspect $1 | grep api.bluez -q -m 1 && echo true || echo false
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "$1" == "getdevices" ]; then
|
||||||
|
pactl -f json list sinks | jq -Mc '[.[] | {id: .index, name: .description, mute: .mute, default: (.state == "RUNNING")}]'
|
||||||
|
elif [ "$1" == "vol" ]; then
|
||||||
|
vol $2
|
||||||
|
elif [ "$1" == "getvol" ]; then
|
||||||
|
getvol $2
|
||||||
|
elif [ "$1" == "ismutedsource" ]; then
|
||||||
|
ismutedsource $2
|
||||||
|
elif [ "$1" == "ismutedsink" ]; then
|
||||||
|
ismutedsink $2
|
||||||
|
elif [ "$1" == "mutesink" ]; then
|
||||||
|
mutesink $2
|
||||||
|
elif [ "$1" == "mutesource" ]; then
|
||||||
|
mutesource $2
|
||||||
|
elif [ "$1" == "isblue" ]; then
|
||||||
|
isblue $2
|
||||||
|
elif [ "$1" == "getdefaultsink" ]; then
|
||||||
|
wpctl inspect @DEFAULT_SINK@ | grep 'node.description' | awk -F ' = ' '{print $2}' | sed 's/\"//g'
|
||||||
|
else
|
||||||
|
usage
|
||||||
|
fi
|
||||||
28
.config/eww/scripts/battery.sh
Executable file
@@ -0,0 +1,28 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
bat=$(upower -e | grep BAT)
|
||||||
|
|
||||||
|
if [ -z $bat ]; then
|
||||||
|
echo '{}' | jq -Mc ".has_battery = false"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
upower=$(upower -i $bat)
|
||||||
|
|
||||||
|
get_percentage() {
|
||||||
|
echo "$1" | grep percentage | awk '{print $2}'
|
||||||
|
}
|
||||||
|
|
||||||
|
get_time_remaining() {
|
||||||
|
echo "$1" | grep "time to empty" | awk -F: '{print $2}'
|
||||||
|
}
|
||||||
|
|
||||||
|
get_icon_name() {
|
||||||
|
echo "$1" | grep icon-name | awk '{print $2}'
|
||||||
|
}
|
||||||
|
|
||||||
|
is_charging() {
|
||||||
|
echo "$1" | grep state | awk '{print $2}'
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '{}' | jq -Mc ".has_battery = true | .percentage = \"$(get_percentage "$upower")\" | .time_remaining= \"$(get_time_remaining "$upower")\" | .is_charging = \"$(is_charging "$upower")\" | .icon_name = \"$(get_icon_name "$upower")\" "
|
||||||
21
.config/eww/scripts/change_active_workspace.sh
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
function clamp {
|
||||||
|
min=$1
|
||||||
|
max=$2
|
||||||
|
val=$3
|
||||||
|
python -c "print(max($min, min($val, $max)))"
|
||||||
|
}
|
||||||
|
|
||||||
|
direction=$1
|
||||||
|
current=$2
|
||||||
|
if test "$direction" = "down"
|
||||||
|
then
|
||||||
|
target=$(clamp 1 10 $(($current+1)))
|
||||||
|
echo "jumping to $target"
|
||||||
|
hyprctl dispatch workspace $target
|
||||||
|
elif test "$direction" = "up"
|
||||||
|
then
|
||||||
|
target=$(clamp 1 10 $(($current-1)))
|
||||||
|
echo "jumping to $target"
|
||||||
|
hyprctl dispatch workspace $target
|
||||||
|
fi
|
||||||
6
.config/eww/scripts/get_active_workspace.sh
Executable file
@@ -0,0 +1,6 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
hyprctl monitors -j | jq '.[] | select(.focused) | .activeWorkspace.id'
|
||||||
|
|
||||||
|
socat -u UNIX-CONNECT:/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - |
|
||||||
|
stdbuf -o0 awk -F '>>|,' -e '/^workspace>>/ {print $2}' -e '/^focusedmon>>/ {print $3}'
|
||||||
3
.config/eww/scripts/get_window_title.sh
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
hyprctl activewindow -j | jq --raw-output .title
|
||||||
|
socat -u UNIX-CONNECT:/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | stdbuf -o0 awk -F '>>|,' '/^activewindow>>/{print $3}'
|
||||||
10
.config/eww/scripts/get_workspaces.sh
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
spaces (){
|
||||||
|
hyprctl workspaces -j | jq -Mc '[.[] | {id: (.id | tostring), windows: (.windows | tostring)}] | sort_by(.id)'
|
||||||
|
}
|
||||||
|
|
||||||
|
spaces
|
||||||
|
socat -u UNIX-CONNECT:/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | while read -r line; do
|
||||||
|
spaces
|
||||||
|
done
|
||||||
20
.config/eww/scripts/get_yt_media_art.sh
Executable file
@@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
url=$(cat ~/.config/YouTube\ Music/config.json | jq --raw-output .url)
|
||||||
|
if [ -z "$url" ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
id="${url##*?v=}"
|
||||||
|
id="${id%%&*}"
|
||||||
|
|
||||||
|
#https://img.youtube.com/vi/$id/[option].jpg
|
||||||
|
#0
|
||||||
|
#1
|
||||||
|
#mqdefault
|
||||||
|
#hqdefault
|
||||||
|
#sddefault
|
||||||
|
#maxresdefault
|
||||||
|
url="https://img.youtube.com/vi/$id/sddefault.jpg"
|
||||||
|
|
||||||
|
curl -o ~/.config/eww/medi_art.jpg "$url"
|
||||||
63
.config/eww/scripts/net.sh
Executable file
@@ -0,0 +1,63 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo "Usage: $0 <func> [args]
|
||||||
|
func: islowest[INT], iswlan, ssid"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -z $1 ]; then
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
getlowest() {
|
||||||
|
lines=$(ip route | grep default)
|
||||||
|
|
||||||
|
# Initialize variables to store the highest metric and interface
|
||||||
|
lowest_metric=99999999999
|
||||||
|
lowest_interface=""
|
||||||
|
|
||||||
|
# Loop through the lines and compare metrics
|
||||||
|
while IFS= read -r line; do
|
||||||
|
interface=$(echo "$line" | awk '{print $5}')
|
||||||
|
metric=$(echo "$line" | awk '{for(i=1;i<=NF;i++) if($i=="metric") print $(i+1)}')
|
||||||
|
|
||||||
|
if [ "$metric" -lt "$lowest_metric" ]; then
|
||||||
|
lowest_metric="$metric"
|
||||||
|
lowest_interface="$interface"
|
||||||
|
fi
|
||||||
|
done <<< "$lines"
|
||||||
|
|
||||||
|
echo "$lowest_interface"
|
||||||
|
}
|
||||||
|
|
||||||
|
islowest() {
|
||||||
|
if [ "$(getlowest)" == "$1" ]; then
|
||||||
|
echo "true"
|
||||||
|
else
|
||||||
|
echo "false"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
iswlan(){
|
||||||
|
int=$(nmcli -t -f active,ssid,device dev wifi | grep -m 1 yes | awk -F ':' '{print $3}')
|
||||||
|
|
||||||
|
if ! [ -z $int ]; then
|
||||||
|
islowest $int
|
||||||
|
else
|
||||||
|
echo "false"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "$1" == "iswlan" ]; then
|
||||||
|
iswlan
|
||||||
|
elif [ "$1" == "islowest" ]; then
|
||||||
|
islowest $2
|
||||||
|
elif [ "$1" == "getint" ]; then
|
||||||
|
getlowest
|
||||||
|
elif [ "$1" == "ssid" ]; then
|
||||||
|
nmcli -t -f active,ssid dev wifi | grep -m 1 yes | awk -F: '{print $2}'
|
||||||
|
else
|
||||||
|
usage
|
||||||
|
fi
|
||||||
136
.config/fish/config.fish
Executable file
@@ -0,0 +1,136 @@
|
|||||||
|
## 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'"
|
||||||
|
|
||||||
|
## Set settings for https://github.com/franciscolourenco/done
|
||||||
|
set -U __done_min_cmd_duration 10000
|
||||||
|
set -U __done_notification_urgency_level low
|
||||||
|
|
||||||
|
## Environment setup
|
||||||
|
if test -f ~/.fish_profile
|
||||||
|
source ~/.fish_profile
|
||||||
|
end
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
## Starship prompt
|
||||||
|
if type -q starship && status --is-interactive
|
||||||
|
source ("/usr/bin/starship" init fish --print-full-init | psub)
|
||||||
|
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
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
## Aliases
|
||||||
|
# Replace ls with exa
|
||||||
|
if type -q exa
|
||||||
|
alias ls='exa -al --color=always --group-directories-first --icons' # preferred listing
|
||||||
|
alias la='exa -a --color=always --group-directories-first --icons' # all files and dirs
|
||||||
|
alias ll='exa -l --color=always --group-directories-first --icons' # long format
|
||||||
|
alias lt='exa -aT --color=always --group-directories-first --icons' # tree listing
|
||||||
|
alias l.='exa -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 ipn='ip'
|
||||||
|
alias nano=nvim
|
||||||
|
alias cls='clear'
|
||||||
|
alias please='sudo'
|
||||||
|
alias ip='ip -color'
|
||||||
|
alias mkdirs='mkdir --parents'
|
||||||
|
alias ssh="kitty +kitten ssh" #For kitty terminal or use (on client)-> sudo apt install kitty-terminfo
|
||||||
|
alias grubup="sudo update-grub"
|
||||||
|
alias fixpacman="sudo rm /var/lib/pacman/db.lck"
|
||||||
|
alias tarnow='tar -acf '
|
||||||
|
alias tarlist="tar -tvf"
|
||||||
|
alias untar='tar -xvf '
|
||||||
|
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 big="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
|
||||||
7
.config/hypr/env.conf
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
## Environment
|
||||||
|
env = XCURSOR_SIZE,24
|
||||||
|
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
|
||||||
105
.config/hypr/hyprland.conf
Executable file
@@ -0,0 +1,105 @@
|
|||||||
|
## Environment
|
||||||
|
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
|
||||||
|
|
||||||
|
## Input
|
||||||
|
input {
|
||||||
|
kb_layout = de
|
||||||
|
kb_variant =
|
||||||
|
kb_model =
|
||||||
|
kb_options =
|
||||||
|
kb_rules =
|
||||||
|
numlock_by_default = 1
|
||||||
|
|
||||||
|
follow_mouse = 1
|
||||||
|
|
||||||
|
touchpad {
|
||||||
|
natural_scroll = yes
|
||||||
|
}
|
||||||
|
|
||||||
|
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||||
|
}
|
||||||
|
|
||||||
|
## General
|
||||||
|
general {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
|
||||||
|
gaps_in = 5
|
||||||
|
gaps_out = 5
|
||||||
|
border_size = 2
|
||||||
|
col.active_border = rgba(7dc4e4ee) rgba(7dc4e4ee) 45deg
|
||||||
|
col.inactive_border = rgba(595959aa)
|
||||||
|
|
||||||
|
layout = dwindle
|
||||||
|
}
|
||||||
|
|
||||||
|
## Decoration
|
||||||
|
decoration {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
|
||||||
|
rounding = 0
|
||||||
|
|
||||||
|
blur {
|
||||||
|
enabled = true
|
||||||
|
size = 3
|
||||||
|
passes = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
drop_shadow = yes
|
||||||
|
shadow_range = 4
|
||||||
|
shadow_render_power = 3
|
||||||
|
col.shadow = rgba(1a1a1aee)
|
||||||
|
}
|
||||||
|
|
||||||
|
## Animations
|
||||||
|
animations {
|
||||||
|
enabled = yes
|
||||||
|
|
||||||
|
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||||
|
|
||||||
|
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 # you probably want thisr
|
||||||
|
}
|
||||||
|
|
||||||
|
## Master
|
||||||
|
master {
|
||||||
|
new_is_master = true
|
||||||
|
}
|
||||||
|
|
||||||
|
## Gestures
|
||||||
|
gestures {
|
||||||
|
workspace_swipe = on
|
||||||
|
}
|
||||||
|
|
||||||
|
## Misc
|
||||||
|
misc {
|
||||||
|
#mouse_move_enables_dpms = true
|
||||||
|
key_press_enables_dpms = true
|
||||||
|
}
|
||||||
|
|
||||||
|
## Devices
|
||||||
|
device:roccat-roccat-kone-emp-mouse {
|
||||||
|
sensitivity = 0.5
|
||||||
|
}
|
||||||
8
.config/hypr/hyprshade.toml
Executable file
@@ -0,0 +1,8 @@
|
|||||||
|
# [[shades]]
|
||||||
|
# name = "vibrance"
|
||||||
|
# default = true # shader to use during times when there is no other shader scheduled
|
||||||
|
|
||||||
|
[[shades]]
|
||||||
|
name = "blue-light-filter"
|
||||||
|
start_time = 19:00:00
|
||||||
|
end_time = 08:00:00 # optional if you have more than one shade with start_time
|
||||||
96
.config/hypr/keybinds.conf
Executable file
@@ -0,0 +1,96 @@
|
|||||||
|
## 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, 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
|
||||||
|
|
||||||
|
# Applications
|
||||||
|
bind = $mainMod, T, exec, kitty
|
||||||
|
bind = $mainMod, E, exec, thunar || dolphin
|
||||||
|
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
|
||||||
|
|
||||||
|
# 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, -10 0
|
||||||
|
binde = $mainMod CTRL, h, resizeactive, -10 0
|
||||||
|
binde = $mainMod CTRL, right, resizeactive, 10 0
|
||||||
|
binde = $mainMod CTRL, l, resizeactive, 10 0
|
||||||
|
binde = $mainMod CTRL, up, resizeactive, 0 -10
|
||||||
|
binde = $mainMod CTRL, k, resizeactive, 0 -10
|
||||||
|
binde = $mainMod CTRL, down, resizeactive, 0 10
|
||||||
|
binde = $mainMod CTRL, j, resizeactive, 0 10
|
||||||
|
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
.config/hypr/nvidia.conf
Executable 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
|
||||||
36
.config/hypr/scripts/app_launcher.sh
Executable 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"
|
||||||
53
.config/hypr/scripts/background.sh
Executable 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/hypr/theme/current_background.jpg
|
||||||
|
sleep $INTERVAL
|
||||||
|
done
|
||||||
|
done
|
||||||
17
.config/hypr/scripts/bar.sh
Executable file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
eww open bar1
|
||||||
|
eww open bar2
|
||||||
|
eww open bar3
|
||||||
|
|
||||||
|
indicator-mic-cam & disown
|
||||||
|
|
||||||
|
## Waybar auto update (requires inotifytools)
|
||||||
|
# CONFIG_FILES="$HOME/.config/waybar/config $HOME/.config/waybar/style.css"
|
||||||
|
#
|
||||||
|
# trap "killall waybar" EXIT
|
||||||
|
#
|
||||||
|
# while true; do
|
||||||
|
# waybar &
|
||||||
|
# inotifywait -e create,modify $CONFIG_FILES
|
||||||
|
# killall waybar
|
||||||
|
# done
|
||||||
19
.config/hypr/scripts/battery_check.sh
Executable file
@@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
bat=$(upower -e | grep BAT)
|
||||||
|
|
||||||
|
if [ -z $bat ]; then
|
||||||
|
echo "No battery available!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
per=$(upower -i $bat | grep percentage | awk '{print $2}')
|
||||||
|
per="${per%\%}"
|
||||||
|
|
||||||
|
if "$per" -lt 15 #&& ! is_charging
|
||||||
|
eww open battery_warning
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep 120
|
||||||
|
done
|
||||||
24
.config/hypr/scripts/clipboard.sh
Executable 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
|
||||||
3
.config/hypr/scripts/game_mode.sh
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
eww close bar1 || eww open bar1 & disown
|
||||||
21
.config/hypr/scripts/idle.sh
Executable 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
|
||||||
10
.config/hypr/scripts/lock.sh
Executable 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
|
||||||
22
.config/hypr/startup.conf
Executable file
@@ -0,0 +1,22 @@
|
|||||||
|
## Programms
|
||||||
|
exec-once = discord
|
||||||
|
exec-once = youtube-music
|
||||||
|
|
||||||
|
exec-once = swaync
|
||||||
|
exec = hyprshade auto
|
||||||
|
exec-once = nm-applet
|
||||||
|
exec-once = blueman-applet
|
||||||
|
exec-once = playerctld daemon
|
||||||
|
exec-once = ~/.config/hypr/scripts/bar.sh
|
||||||
|
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
|
||||||
1
.config/hypr/theme/current_background.jpg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
link for lock and rofi
|
||||||
33
.config/hypr/windowrule.conf
Executable file
@@ -0,0 +1,33 @@
|
|||||||
|
## 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, ^(league of legends.exe)$
|
||||||
|
windowrule = workspace 4,^(lutris)$
|
||||||
|
windowrule = workspace 5,^(discord)$
|
||||||
|
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
|
||||||
14
.config/kdeglobals
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
[$Version]
|
||||||
|
update_info=filepicker.upd:filepicker-remove-old-previews-entry
|
||||||
|
|
||||||
|
[General]
|
||||||
|
TerminalApplication=kitty
|
||||||
|
|
||||||
|
[KDE]
|
||||||
|
ShowDeleteCommand=true
|
||||||
|
|
||||||
|
[KShortcutsDialog Settings]
|
||||||
|
Dialog Size=600,480
|
||||||
|
|
||||||
|
[PreviewSettings]
|
||||||
|
MaximumRemoteSize=0
|
||||||
2472
.config/kitty/kitty.conf
Executable file
489
.config/nvim/init.lua
Executable file
@@ -0,0 +1,489 @@
|
|||||||
|
--- 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({
|
||||||
|
-- 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 = 4
|
||||||
|
vim.opt.softtabstop = 4
|
||||||
|
vim.opt.shiftwidth = 4
|
||||||
|
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")
|
||||||
|
|
||||||
|
-- Keymaps for better default experience
|
||||||
|
-- See `:help vim.keymap.set()`
|
||||||
|
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 })
|
||||||
|
|
||||||
|
--- [[ 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 = {
|
||||||
|
jsonls = {},
|
||||||
|
clangd = {},
|
||||||
|
html = { filetypes = { "html", "twig", "hbs" } },
|
||||||
|
cssls = {},
|
||||||
|
rust_analyzer = {},
|
||||||
|
jdtls = {},
|
||||||
|
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
|
||||||
0
.config/ranger/colorschemes/__init__.py
Executable file
BIN
.config/ranger/colorschemes/__pycache__/__init__.cpython-311.pyc
Executable file
BIN
.config/ranger/colorschemes/__pycache__/dracula.cpython-311.pyc
Executable file
219
.config/ranger/colorschemes/dracula.py
Executable file
@@ -0,0 +1,219 @@
|
|||||||
|
# This file is part of ranger, the console file manager.
|
||||||
|
# License: GNU GPL version 3, see the file "AUTHORS" for details.
|
||||||
|
# This theme was greatly inspired by "RougarouTheme" for ranger
|
||||||
|
# It can be found in: `https://github.com/RougarouTheme/ranger`
|
||||||
|
|
||||||
|
from __future__ import absolute_import, division, print_function
|
||||||
|
|
||||||
|
from ranger.gui.colorscheme import ColorScheme
|
||||||
|
from ranger.gui.color import (
|
||||||
|
black,
|
||||||
|
blue,
|
||||||
|
cyan,
|
||||||
|
green,
|
||||||
|
magenta,
|
||||||
|
red,
|
||||||
|
white,
|
||||||
|
yellow,
|
||||||
|
default,
|
||||||
|
normal,
|
||||||
|
bold,
|
||||||
|
reverse,
|
||||||
|
default_colors,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class Dracula(ColorScheme):
|
||||||
|
progress_bar_color = 13
|
||||||
|
|
||||||
|
def verify_browser(self, context, fg, bg, attr):
|
||||||
|
if context.selected:
|
||||||
|
attr = reverse
|
||||||
|
else:
|
||||||
|
attr = normal
|
||||||
|
if context.empty or context.error:
|
||||||
|
bg = 1
|
||||||
|
fg = 0
|
||||||
|
if context.border:
|
||||||
|
fg = default
|
||||||
|
if context.document:
|
||||||
|
attr |= normal
|
||||||
|
fg = 13
|
||||||
|
if context.media:
|
||||||
|
if context.image:
|
||||||
|
attr |= normal
|
||||||
|
fg = 3
|
||||||
|
elif context.video:
|
||||||
|
fg = 1
|
||||||
|
elif context.audio:
|
||||||
|
fg = 6
|
||||||
|
else:
|
||||||
|
fg = 10
|
||||||
|
if context.container:
|
||||||
|
attr |= bold
|
||||||
|
fg = 9
|
||||||
|
if context.directory:
|
||||||
|
attr |= bold
|
||||||
|
fg = 4
|
||||||
|
elif context.executable and not any(
|
||||||
|
(context.media, context.container, context.fifo, context.socket)
|
||||||
|
):
|
||||||
|
attr |= bold
|
||||||
|
fg = 2
|
||||||
|
if context.socket:
|
||||||
|
fg = 5
|
||||||
|
attr |= bold
|
||||||
|
if context.fifo or context.device:
|
||||||
|
fg = 3
|
||||||
|
if context.device:
|
||||||
|
attr |= bold
|
||||||
|
if context.link:
|
||||||
|
fg = 6 if context.good else 13
|
||||||
|
if context.tag_marker and not context.selected:
|
||||||
|
attr |= bold
|
||||||
|
if fg in (red, magenta):
|
||||||
|
fg = 1
|
||||||
|
else:
|
||||||
|
fg = 15
|
||||||
|
if not context.selected and (context.cut or context.copied):
|
||||||
|
fg = 8
|
||||||
|
attr |= bold
|
||||||
|
if context.main_column:
|
||||||
|
if context.selected:
|
||||||
|
attr |= bold
|
||||||
|
fg = 10
|
||||||
|
if context.marked:
|
||||||
|
attr |= bold
|
||||||
|
fg = 11
|
||||||
|
if context.badinfo:
|
||||||
|
if attr & reverse:
|
||||||
|
bg = 5
|
||||||
|
else:
|
||||||
|
fg = 5
|
||||||
|
|
||||||
|
if context.inactive_pane:
|
||||||
|
fg = 6
|
||||||
|
|
||||||
|
return fg, bg, attr
|
||||||
|
|
||||||
|
def verify_titlebar(self, context, fg, bg, attr):
|
||||||
|
attr |= bold
|
||||||
|
if context.hostname:
|
||||||
|
fg = 1 if context.bad else 2
|
||||||
|
elif context.directory:
|
||||||
|
fg = 4
|
||||||
|
elif context.tab:
|
||||||
|
if context.good:
|
||||||
|
bg = 2
|
||||||
|
elif context.link:
|
||||||
|
fg = 6
|
||||||
|
|
||||||
|
return fg, bg, attr
|
||||||
|
|
||||||
|
def verify_statusbar(self, context, fg, bg, attr):
|
||||||
|
if context.permissions:
|
||||||
|
if context.good:
|
||||||
|
fg = 2
|
||||||
|
elif context.bad:
|
||||||
|
bg = 5
|
||||||
|
fg = 8
|
||||||
|
if context.marked:
|
||||||
|
attr |= bold | reverse
|
||||||
|
fg = 3
|
||||||
|
if context.frozen:
|
||||||
|
attr |= bold | reverse
|
||||||
|
fg = 6
|
||||||
|
if context.message:
|
||||||
|
if context.bad:
|
||||||
|
attr |= bold
|
||||||
|
fg = 1
|
||||||
|
if context.loaded:
|
||||||
|
bg = self.progress_bar_color
|
||||||
|
if context.vcsinfo:
|
||||||
|
fg = 4
|
||||||
|
attr &= ~bold
|
||||||
|
if context.vcscommit:
|
||||||
|
fg = 3
|
||||||
|
attr &= ~bold
|
||||||
|
if context.vcsdate:
|
||||||
|
fg = 6
|
||||||
|
attr &= ~bold
|
||||||
|
|
||||||
|
return fg, bg, attr
|
||||||
|
|
||||||
|
def verify_taskview(self, context, fg, bg, attr):
|
||||||
|
if context.title:
|
||||||
|
fg = 4
|
||||||
|
|
||||||
|
if context.selected:
|
||||||
|
attr |= reverse
|
||||||
|
|
||||||
|
if context.loaded:
|
||||||
|
if context.selected:
|
||||||
|
fg = self.progress_bar_color
|
||||||
|
else:
|
||||||
|
bg = self.progress_bar_color
|
||||||
|
|
||||||
|
return fg, bg, attr
|
||||||
|
|
||||||
|
def verify_vcsfile(self, context, fg, bg, attr):
|
||||||
|
attr &= ~bold
|
||||||
|
if context.vcsconflict:
|
||||||
|
fg = 5
|
||||||
|
elif context.vcschanged:
|
||||||
|
fg = 1
|
||||||
|
elif context.vcsunknown:
|
||||||
|
fg = 1
|
||||||
|
elif context.vcsstaged:
|
||||||
|
fg = 2
|
||||||
|
elif context.vcssync:
|
||||||
|
fg = 2
|
||||||
|
elif context.vcsignored:
|
||||||
|
fg = default
|
||||||
|
|
||||||
|
return fg, bg, attr
|
||||||
|
|
||||||
|
def verify_vcsremote(self, context, fg, bg, attr):
|
||||||
|
attr &= ~bold
|
||||||
|
if context.vcssync or context.vcsnone:
|
||||||
|
fg = 2
|
||||||
|
elif context.vcsbehind:
|
||||||
|
fg = 1
|
||||||
|
elif context.vcsahead:
|
||||||
|
fg = 6
|
||||||
|
elif context.vcsdiverged:
|
||||||
|
fg = 5
|
||||||
|
elif context.vcsunknown:
|
||||||
|
fg = 1
|
||||||
|
|
||||||
|
return fg, bg, attr
|
||||||
|
|
||||||
|
def use(self, context):
|
||||||
|
fg, bg, attr = default_colors
|
||||||
|
|
||||||
|
if context.reset:
|
||||||
|
return default_colors
|
||||||
|
|
||||||
|
elif context.in_browser:
|
||||||
|
fg, bg, attr = self.verify_browser(context, fg, bg, attr)
|
||||||
|
|
||||||
|
elif context.in_titlebar:
|
||||||
|
fg, bg, attr = self.verify_titlebar(context, fg, bg, attr)
|
||||||
|
|
||||||
|
elif context.in_statusbar:
|
||||||
|
fg, bg, attr = self.verify_statusbar(context, fg, bg, attr)
|
||||||
|
|
||||||
|
if context.text:
|
||||||
|
if context.highlight:
|
||||||
|
attr |= reverse
|
||||||
|
|
||||||
|
if context.in_taskview:
|
||||||
|
fg, bg, attr = self.verify_taskview(context, fg, bg, attr)
|
||||||
|
|
||||||
|
if context.vcsfile and not context.selected:
|
||||||
|
fg, bg, attr = self.verify_vcsfile(context, fg, bg, attr)
|
||||||
|
|
||||||
|
elif context.vcsremote and not context.selected:
|
||||||
|
fg, bg, attr = self.verify_vcsremote(context, fg, bg, attr)
|
||||||
|
|
||||||
|
return fg, bg, attr
|
||||||
759
.config/ranger/rc.conf
Executable file
@@ -0,0 +1,759 @@
|
|||||||
|
# ===================================================================
|
||||||
|
# This file contains the default startup commands for ranger.
|
||||||
|
# To change them, it is recommended to create either /etc/ranger/rc.conf
|
||||||
|
# (system-wide) or ~/.config/ranger/rc.conf (per user) and add your custom
|
||||||
|
# commands there.
|
||||||
|
#
|
||||||
|
# If you copy this whole file there, you may want to set the environment
|
||||||
|
# variable RANGER_LOAD_DEFAULT_RC to FALSE to avoid loading it twice.
|
||||||
|
#
|
||||||
|
# The purpose of this file is mainly to define keybindings and settings.
|
||||||
|
# For running more complex python code, please create a plugin in "plugins/" or
|
||||||
|
# a command in "commands.py".
|
||||||
|
#
|
||||||
|
# Each line is a command that will be run before the user interface
|
||||||
|
# is initialized. As a result, you can not use commands which rely
|
||||||
|
# on the UI such as :delete or :mark.
|
||||||
|
# ===================================================================
|
||||||
|
|
||||||
|
# ===================================================================
|
||||||
|
# == Options
|
||||||
|
# ===================================================================
|
||||||
|
|
||||||
|
# Which viewmode should be used? Possible values are:
|
||||||
|
# miller: Use miller columns which show multiple levels of the hierarchy
|
||||||
|
# multipane: Midnight-commander like multipane view showing all tabs next
|
||||||
|
# to each other
|
||||||
|
set viewmode miller
|
||||||
|
#set viewmode multipane
|
||||||
|
|
||||||
|
# How many columns are there, and what are their relative widths?
|
||||||
|
set column_ratios 1,3,4
|
||||||
|
|
||||||
|
# Which files should be hidden? (regular expression)
|
||||||
|
set hidden_filter ^\.|\.(?:pyc|pyo|bak|swp)$|^lost\+found$|^__(py)?cache__$
|
||||||
|
|
||||||
|
# Show hidden files? You can toggle this by typing 'zh'
|
||||||
|
set show_hidden false
|
||||||
|
|
||||||
|
# Ask for a confirmation when running the "delete" command?
|
||||||
|
# Valid values are "always", "never", "multiple" (default)
|
||||||
|
# With "multiple", ranger will ask only if you delete multiple files at once.
|
||||||
|
set confirm_on_delete multiple
|
||||||
|
|
||||||
|
# Use non-default path for file preview script?
|
||||||
|
# ranger ships with scope.sh, a script that calls external programs (see
|
||||||
|
# README.md for dependencies) to preview images, archives, etc.
|
||||||
|
#set preview_script ~/.config/ranger/scope.sh
|
||||||
|
|
||||||
|
# Use the external preview script or display simple plain text or image previews?
|
||||||
|
set use_preview_script true
|
||||||
|
|
||||||
|
# Automatically count files in the directory, even before entering them?
|
||||||
|
set automatically_count_files true
|
||||||
|
|
||||||
|
# Open all images in this directory when running certain image viewers
|
||||||
|
# like feh or sxiv? You can still open selected files by marking them.
|
||||||
|
set open_all_images true
|
||||||
|
|
||||||
|
# Be aware of version control systems and display information.
|
||||||
|
set vcs_aware false
|
||||||
|
|
||||||
|
# State of the four backends git, hg, bzr, svn. The possible states are
|
||||||
|
# disabled, local (only show local info), enabled (show local and remote
|
||||||
|
# information).
|
||||||
|
set vcs_backend_git enabled
|
||||||
|
set vcs_backend_hg disabled
|
||||||
|
set vcs_backend_bzr disabled
|
||||||
|
set vcs_backend_svn disabled
|
||||||
|
|
||||||
|
# Truncate the long commit messages to this length when shown in the statusbar.
|
||||||
|
set vcs_msg_length 50
|
||||||
|
|
||||||
|
# Use one of the supported image preview protocols
|
||||||
|
set preview_images false
|
||||||
|
|
||||||
|
# Set the preview image method. Supported methods:
|
||||||
|
#
|
||||||
|
# * w3m (default):
|
||||||
|
# Preview images in full color with the external command "w3mimgpreview"?
|
||||||
|
# This requires the console web browser "w3m" and a supported terminal.
|
||||||
|
# It has been successfully tested with "xterm" and "urxvt" without tmux.
|
||||||
|
#
|
||||||
|
# * iterm2:
|
||||||
|
# Preview images in full color using iTerm2 image previews
|
||||||
|
# (http://iterm2.com/images.html). This requires using iTerm2 compiled
|
||||||
|
# with image preview support.
|
||||||
|
#
|
||||||
|
# This feature relies on the dimensions of the terminal's font. By default, a
|
||||||
|
# width of 8 and height of 11 are used. To use other values, set the options
|
||||||
|
# iterm2_font_width and iterm2_font_height to the desired values.
|
||||||
|
#
|
||||||
|
# * terminology:
|
||||||
|
# Previews images in full color in the terminology terminal emulator.
|
||||||
|
# Supports a wide variety of formats, even vector graphics like svg.
|
||||||
|
#
|
||||||
|
# * urxvt:
|
||||||
|
# Preview images in full color using urxvt image backgrounds. This
|
||||||
|
# requires using urxvt compiled with pixbuf support.
|
||||||
|
#
|
||||||
|
# * urxvt-full:
|
||||||
|
# The same as urxvt but utilizing not only the preview pane but the
|
||||||
|
# whole terminal window.
|
||||||
|
#
|
||||||
|
# * kitty:
|
||||||
|
# Preview images in full color using kitty image protocol.
|
||||||
|
# Requires python PIL or pillow library.
|
||||||
|
# If ranger does not share the local filesystem with kitty
|
||||||
|
# the transfer method is changed to encode the whole image;
|
||||||
|
# while slower, this allows remote previews,
|
||||||
|
# for example during an ssh session.
|
||||||
|
# Tmux is unsupported.
|
||||||
|
#
|
||||||
|
# * ueberzug:
|
||||||
|
# Preview images in full color with the external command "ueberzug".
|
||||||
|
# Images are shown by using a child window.
|
||||||
|
# Only for users who run X11 in GNU/Linux.
|
||||||
|
set preview_images_method w3m
|
||||||
|
|
||||||
|
# Delay in seconds before displaying an image with the w3m method.
|
||||||
|
# Increase it in case of experiencing display corruption.
|
||||||
|
set w3m_delay 0.02
|
||||||
|
|
||||||
|
# Manually adjust the w3mimg offset when using a terminal which needs this
|
||||||
|
set w3m_offset 0
|
||||||
|
|
||||||
|
# Default iTerm2 font size (see: preview_images_method: iterm2)
|
||||||
|
set iterm2_font_width 8
|
||||||
|
set iterm2_font_height 11
|
||||||
|
|
||||||
|
# Use a unicode "..." character to mark cut-off filenames?
|
||||||
|
set unicode_ellipsis false
|
||||||
|
|
||||||
|
# BIDI support - try to properly display file names in RTL languages (Hebrew, Arabic).
|
||||||
|
# Requires the python-bidi pip package
|
||||||
|
set bidi_support false
|
||||||
|
|
||||||
|
# Show dotfiles in the bookmark preview box?
|
||||||
|
set show_hidden_bookmarks true
|
||||||
|
|
||||||
|
# Which colorscheme to use? These colorschemes are available by default:
|
||||||
|
# default, jungle, snow, solarized
|
||||||
|
set colorscheme dracula
|
||||||
|
|
||||||
|
# Preview files on the rightmost column?
|
||||||
|
# And collapse (shrink) the last column if there is nothing to preview?
|
||||||
|
set preview_files true
|
||||||
|
set preview_directories true
|
||||||
|
set collapse_preview true
|
||||||
|
|
||||||
|
# Wrap long lines in plain text previews?
|
||||||
|
set wrap_plaintext_previews false
|
||||||
|
|
||||||
|
# Save the console history on exit?
|
||||||
|
set save_console_history true
|
||||||
|
|
||||||
|
# Draw the status bar on top of the browser window (default: bottom)
|
||||||
|
set status_bar_on_top false
|
||||||
|
|
||||||
|
# Draw a progress bar in the status bar which displays the average state of all
|
||||||
|
# currently running tasks which support progress bars?
|
||||||
|
set draw_progress_bar_in_status_bar true
|
||||||
|
|
||||||
|
# Draw borders around columns? (separators, outline, both, or none)
|
||||||
|
# Separators are vertical lines between columns.
|
||||||
|
# Outline draws a box around all the columns.
|
||||||
|
# Both combines the two.
|
||||||
|
set draw_borders none
|
||||||
|
|
||||||
|
# Display the directory name in tabs?
|
||||||
|
set dirname_in_tabs false
|
||||||
|
|
||||||
|
# Enable the mouse support?
|
||||||
|
set mouse_enabled true
|
||||||
|
|
||||||
|
# Display the file size in the main column or status bar?
|
||||||
|
set display_size_in_main_column true
|
||||||
|
set display_size_in_status_bar true
|
||||||
|
|
||||||
|
# Display the free disk space in the status bar?
|
||||||
|
set display_free_space_in_status_bar true
|
||||||
|
|
||||||
|
# Display files tags in all columns or only in main column?
|
||||||
|
set display_tags_in_all_columns true
|
||||||
|
|
||||||
|
# Set a title for the window? Updates both `WM_NAME` and `WM_ICON_NAME`
|
||||||
|
set update_title false
|
||||||
|
|
||||||
|
# Set the tmux/screen window-name to "ranger"?
|
||||||
|
set update_tmux_title true
|
||||||
|
|
||||||
|
# Shorten the title if it gets long? The number defines how many
|
||||||
|
# directories are displayed at once, 0 turns off this feature.
|
||||||
|
set shorten_title 3
|
||||||
|
|
||||||
|
# Show hostname in titlebar?
|
||||||
|
set hostname_in_titlebar true
|
||||||
|
|
||||||
|
# Abbreviate $HOME with ~ in the titlebar (first line) of ranger?
|
||||||
|
set tilde_in_titlebar false
|
||||||
|
|
||||||
|
# How many directory-changes or console-commands should be kept in history?
|
||||||
|
set max_history_size 20
|
||||||
|
set max_console_history_size 50
|
||||||
|
|
||||||
|
# Try to keep so much space between the top/bottom border when scrolling:
|
||||||
|
set scroll_offset 8
|
||||||
|
|
||||||
|
# Flush the input after each key hit? (Noticeable when ranger lags)
|
||||||
|
set flushinput true
|
||||||
|
|
||||||
|
# Padding on the right when there's no preview?
|
||||||
|
# This allows you to click into the space to run the file.
|
||||||
|
set padding_right true
|
||||||
|
|
||||||
|
# Save bookmarks (used with mX and `X) instantly?
|
||||||
|
# This helps to synchronize bookmarks between multiple ranger
|
||||||
|
# instances but leads to *slight* performance loss.
|
||||||
|
# When false, bookmarks are saved when ranger is exited.
|
||||||
|
set autosave_bookmarks true
|
||||||
|
|
||||||
|
# Save the "`" bookmark to disk. This can be used to switch to the last
|
||||||
|
# directory by typing "``".
|
||||||
|
set save_backtick_bookmark true
|
||||||
|
|
||||||
|
# You can display the "real" cumulative size of directories by using the
|
||||||
|
# command :get_cumulative_size or typing "dc". The size is expensive to
|
||||||
|
# calculate and will not be updated automatically. You can choose
|
||||||
|
# to update it automatically though by turning on this option:
|
||||||
|
set autoupdate_cumulative_size false
|
||||||
|
|
||||||
|
# Turning this on makes sense for screen readers:
|
||||||
|
set show_cursor false
|
||||||
|
|
||||||
|
# One of: size, natural, basename, atime, ctime, mtime, type, random
|
||||||
|
set sort natural
|
||||||
|
|
||||||
|
# Additional sorting options
|
||||||
|
set sort_reverse false
|
||||||
|
set sort_case_insensitive true
|
||||||
|
set sort_directories_first true
|
||||||
|
set sort_unicode false
|
||||||
|
|
||||||
|
# Enable this if key combinations with the Alt Key don't work for you.
|
||||||
|
# (Especially on xterm)
|
||||||
|
set xterm_alt_key false
|
||||||
|
|
||||||
|
# Whether to include bookmarks in cd command
|
||||||
|
set cd_bookmarks true
|
||||||
|
|
||||||
|
# Changes case sensitivity for the cd command tab completion
|
||||||
|
set cd_tab_case sensitive
|
||||||
|
|
||||||
|
# Use fuzzy tab completion with the "cd" command. For example,
|
||||||
|
# ":cd /u/lo/b<tab>" expands to ":cd /usr/local/bin".
|
||||||
|
set cd_tab_fuzzy false
|
||||||
|
|
||||||
|
# Avoid previewing files larger than this size, in bytes. Use a value of 0 to
|
||||||
|
# disable this feature.
|
||||||
|
set preview_max_size 0
|
||||||
|
|
||||||
|
# The key hint lists up to this size have their sublists expanded.
|
||||||
|
# Otherwise the submaps are replaced with "...".
|
||||||
|
set hint_collapse_threshold 10
|
||||||
|
|
||||||
|
# Add the highlighted file to the path in the titlebar
|
||||||
|
set show_selection_in_titlebar true
|
||||||
|
|
||||||
|
# The delay that ranger idly waits for user input, in milliseconds, with a
|
||||||
|
# resolution of 100ms. Lower delay reduces lag between directory updates but
|
||||||
|
# increases CPU load.
|
||||||
|
set idle_delay 2000
|
||||||
|
|
||||||
|
# When the metadata manager module looks for metadata, should it only look for
|
||||||
|
# a ".metadata.json" file in the current directory, or do a deep search and
|
||||||
|
# check all directories above the current one as well?
|
||||||
|
set metadata_deep_search false
|
||||||
|
|
||||||
|
# Clear all existing filters when leaving a directory
|
||||||
|
set clear_filters_on_dir_change false
|
||||||
|
|
||||||
|
# Disable displaying line numbers in main column.
|
||||||
|
# Possible values: false, absolute, relative.
|
||||||
|
set line_numbers false
|
||||||
|
|
||||||
|
# When line_numbers=relative show the absolute line number in the
|
||||||
|
# current line.
|
||||||
|
set relative_current_zero false
|
||||||
|
|
||||||
|
# Start line numbers from 1 instead of 0
|
||||||
|
set one_indexed false
|
||||||
|
|
||||||
|
# Save tabs on exit
|
||||||
|
set save_tabs_on_exit false
|
||||||
|
|
||||||
|
# Enable scroll wrapping - moving down while on the last item will wrap around to
|
||||||
|
# the top and vice versa.
|
||||||
|
set wrap_scroll false
|
||||||
|
|
||||||
|
# Set the global_inode_type_filter to nothing. Possible options: d, f and l for
|
||||||
|
# directories, files and symlinks respectively.
|
||||||
|
set global_inode_type_filter
|
||||||
|
|
||||||
|
# This setting allows to freeze the list of files to save I/O bandwidth. It
|
||||||
|
# should be 'false' during start-up, but you can toggle it by pressing F.
|
||||||
|
set freeze_files false
|
||||||
|
|
||||||
|
# Print file sizes in bytes instead of the default human-readable format.
|
||||||
|
set size_in_bytes false
|
||||||
|
|
||||||
|
# Warn at startup if RANGER_LEVEL env var is greater than 0, in other words
|
||||||
|
# give a warning when you nest ranger in a subshell started by ranger.
|
||||||
|
# Special value "error" makes the warning more visible.
|
||||||
|
set nested_ranger_warning true
|
||||||
|
|
||||||
|
# ===================================================================
|
||||||
|
# == Local Options
|
||||||
|
# ===================================================================
|
||||||
|
# You can set local options that only affect a single directory.
|
||||||
|
|
||||||
|
# Examples:
|
||||||
|
# setlocal path=~/downloads sort mtime
|
||||||
|
|
||||||
|
# ===================================================================
|
||||||
|
# == Command Aliases in the Console
|
||||||
|
# ===================================================================
|
||||||
|
|
||||||
|
alias e edit
|
||||||
|
alias q quit
|
||||||
|
alias q! quit!
|
||||||
|
alias qa quitall
|
||||||
|
alias qa! quitall!
|
||||||
|
alias qall quitall
|
||||||
|
alias qall! quitall!
|
||||||
|
alias setl setlocal
|
||||||
|
|
||||||
|
alias filter scout -prts
|
||||||
|
alias find scout -aets
|
||||||
|
alias mark scout -mr
|
||||||
|
alias unmark scout -Mr
|
||||||
|
alias search scout -rs
|
||||||
|
alias search_inc scout -rts
|
||||||
|
alias travel scout -aefklst
|
||||||
|
|
||||||
|
# ===================================================================
|
||||||
|
# == Define keys for the browser
|
||||||
|
# ===================================================================
|
||||||
|
|
||||||
|
# Basic
|
||||||
|
map Q quitall
|
||||||
|
map q quit
|
||||||
|
copymap q ZZ ZQ
|
||||||
|
|
||||||
|
map R reload_cwd
|
||||||
|
map F set freeze_files!
|
||||||
|
map <C-r> reset
|
||||||
|
map <C-l> redraw_window
|
||||||
|
map <C-c> abort
|
||||||
|
map <esc> change_mode normal
|
||||||
|
map ~ set viewmode!
|
||||||
|
|
||||||
|
map i display_file
|
||||||
|
map <A-j> scroll_preview 1
|
||||||
|
map <A-k> scroll_preview -1
|
||||||
|
map ? help
|
||||||
|
map W display_log
|
||||||
|
map w taskview_open
|
||||||
|
map S shell $SHELL
|
||||||
|
|
||||||
|
map : console
|
||||||
|
map ; console
|
||||||
|
map ! console shell%space
|
||||||
|
map @ console -p6 shell %%s
|
||||||
|
map # console shell -p%space
|
||||||
|
map s console shell%space
|
||||||
|
map r chain draw_possible_programs; console open_with%space
|
||||||
|
map f console find%space
|
||||||
|
map cd console cd%space
|
||||||
|
|
||||||
|
map <C-p> chain console; eval fm.ui.console.history_move(-1)
|
||||||
|
|
||||||
|
# Change the line mode
|
||||||
|
map Mf linemode filename
|
||||||
|
map Mi linemode fileinfo
|
||||||
|
map Mm linemode mtime
|
||||||
|
map Mh linemode humanreadablemtime
|
||||||
|
map Mp linemode permissions
|
||||||
|
map Ms linemode sizemtime
|
||||||
|
map MH linemode sizehumanreadablemtime
|
||||||
|
map Mt linemode metatitle
|
||||||
|
|
||||||
|
# Tagging / Marking
|
||||||
|
map t tag_toggle
|
||||||
|
map ut tag_remove
|
||||||
|
map "<any> tag_toggle tag=%any
|
||||||
|
map <Space> mark_files toggle=True
|
||||||
|
map v mark_files all=True toggle=True
|
||||||
|
map uv mark_files all=True val=False
|
||||||
|
map V toggle_visual_mode
|
||||||
|
map uV toggle_visual_mode reverse=True
|
||||||
|
|
||||||
|
# For the nostalgics: Midnight Commander bindings
|
||||||
|
map <F1> help
|
||||||
|
map <F2> rename_append
|
||||||
|
map <F3> display_file
|
||||||
|
map <F4> edit
|
||||||
|
map <F5> copy
|
||||||
|
map <F6> cut
|
||||||
|
map <F7> console mkdir%space
|
||||||
|
map <F8> console delete
|
||||||
|
#map <F8> console trash
|
||||||
|
map <F10> exit
|
||||||
|
|
||||||
|
# In case you work on a keyboard with dvorak layout
|
||||||
|
map <UP> move up=1
|
||||||
|
map <DOWN> move down=1
|
||||||
|
map <LEFT> move left=1
|
||||||
|
map <RIGHT> move right=1
|
||||||
|
map <HOME> move to=0
|
||||||
|
map <END> move to=-1
|
||||||
|
map <PAGEDOWN> move down=1 pages=True
|
||||||
|
map <PAGEUP> move up=1 pages=True
|
||||||
|
map <CR> move right=1
|
||||||
|
#map <DELETE> console delete
|
||||||
|
map <INSERT> console touch%space
|
||||||
|
|
||||||
|
# VIM-like
|
||||||
|
copymap <UP> k
|
||||||
|
copymap <DOWN> j
|
||||||
|
copymap <LEFT> h
|
||||||
|
copymap <RIGHT> l
|
||||||
|
copymap <HOME> gg
|
||||||
|
copymap <END> G
|
||||||
|
copymap <PAGEDOWN> <C-F>
|
||||||
|
copymap <PAGEUP> <C-B>
|
||||||
|
|
||||||
|
map J move down=0.5 pages=True
|
||||||
|
map K move up=0.5 pages=True
|
||||||
|
copymap J <C-D>
|
||||||
|
copymap K <C-U>
|
||||||
|
|
||||||
|
# Jumping around
|
||||||
|
map H history_go -1
|
||||||
|
map L history_go 1
|
||||||
|
map ] move_parent 1
|
||||||
|
map [ move_parent -1
|
||||||
|
map } traverse
|
||||||
|
map { traverse_backwards
|
||||||
|
map ) jump_non
|
||||||
|
|
||||||
|
map gh cd ~
|
||||||
|
map ge cd /etc
|
||||||
|
map gu cd /usr
|
||||||
|
map gd cd /dev
|
||||||
|
map gl cd -r .
|
||||||
|
map gL cd -r %f
|
||||||
|
map go cd /opt
|
||||||
|
map gv cd /var
|
||||||
|
map gm cd /media
|
||||||
|
map gi eval fm.cd('/run/media/' + os.getenv('USER'))
|
||||||
|
map gM cd /mnt
|
||||||
|
map gs cd /srv
|
||||||
|
map gp cd /tmp
|
||||||
|
map gr cd /
|
||||||
|
map gR eval fm.cd(ranger.RANGERDIR)
|
||||||
|
map g/ cd /
|
||||||
|
map g? cd /usr/share/doc/ranger
|
||||||
|
|
||||||
|
# External Programs
|
||||||
|
map E edit
|
||||||
|
map du shell -p du --max-depth=1 -h --apparent-size
|
||||||
|
map dU shell -p du --max-depth=1 -h --apparent-size | sort -rh
|
||||||
|
map yp yank path
|
||||||
|
map yd yank dir
|
||||||
|
map yn yank name
|
||||||
|
map y. yank name_without_extension
|
||||||
|
|
||||||
|
# Filesystem Operations
|
||||||
|
map = chmod
|
||||||
|
|
||||||
|
map cw console rename%space
|
||||||
|
map a rename_append
|
||||||
|
map A eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"))
|
||||||
|
map I eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"), position=7)
|
||||||
|
|
||||||
|
map pp paste
|
||||||
|
map po paste overwrite=True
|
||||||
|
map pP paste append=True
|
||||||
|
map pO paste overwrite=True append=True
|
||||||
|
map pl paste_symlink relative=False
|
||||||
|
map pL paste_symlink relative=True
|
||||||
|
map phl paste_hardlink
|
||||||
|
map pht paste_hardlinked_subtree
|
||||||
|
map pd console paste dest=
|
||||||
|
map p`<any> paste dest=%any_path
|
||||||
|
map p'<any> paste dest=%any_path
|
||||||
|
|
||||||
|
map dD console delete
|
||||||
|
map dT console trash
|
||||||
|
|
||||||
|
map dd cut
|
||||||
|
map ud uncut
|
||||||
|
map da cut mode=add
|
||||||
|
map dr cut mode=remove
|
||||||
|
map dt cut mode=toggle
|
||||||
|
|
||||||
|
map yy copy
|
||||||
|
map uy uncut
|
||||||
|
map ya copy mode=add
|
||||||
|
map yr copy mode=remove
|
||||||
|
map yt copy mode=toggle
|
||||||
|
|
||||||
|
# Temporary workarounds
|
||||||
|
map dgg eval fm.cut(dirarg=dict(to=0), narg=quantifier)
|
||||||
|
map dG eval fm.cut(dirarg=dict(to=-1), narg=quantifier)
|
||||||
|
map dj eval fm.cut(dirarg=dict(down=1), narg=quantifier)
|
||||||
|
map dk eval fm.cut(dirarg=dict(up=1), narg=quantifier)
|
||||||
|
map ygg eval fm.copy(dirarg=dict(to=0), narg=quantifier)
|
||||||
|
map yG eval fm.copy(dirarg=dict(to=-1), narg=quantifier)
|
||||||
|
map yj eval fm.copy(dirarg=dict(down=1), narg=quantifier)
|
||||||
|
map yk eval fm.copy(dirarg=dict(up=1), narg=quantifier)
|
||||||
|
|
||||||
|
# Searching
|
||||||
|
map / console search%space
|
||||||
|
map n search_next
|
||||||
|
map N search_next forward=False
|
||||||
|
map ct search_next order=tag
|
||||||
|
map cs search_next order=size
|
||||||
|
map ci search_next order=mimetype
|
||||||
|
map cc search_next order=ctime
|
||||||
|
map cm search_next order=mtime
|
||||||
|
map ca search_next order=atime
|
||||||
|
|
||||||
|
# Tabs
|
||||||
|
map <C-n> tab_new
|
||||||
|
map <C-w> tab_close
|
||||||
|
map <TAB> tab_move 1
|
||||||
|
map <S-TAB> tab_move -1
|
||||||
|
map <A-Right> tab_move 1
|
||||||
|
map <A-Left> tab_move -1
|
||||||
|
map gt tab_move 1
|
||||||
|
map gT tab_move -1
|
||||||
|
map gn tab_new
|
||||||
|
map gc tab_close
|
||||||
|
map uq tab_restore
|
||||||
|
map <a-1> tab_open 1
|
||||||
|
map <a-2> tab_open 2
|
||||||
|
map <a-3> tab_open 3
|
||||||
|
map <a-4> tab_open 4
|
||||||
|
map <a-5> tab_open 5
|
||||||
|
map <a-6> tab_open 6
|
||||||
|
map <a-7> tab_open 7
|
||||||
|
map <a-8> tab_open 8
|
||||||
|
map <a-9> tab_open 9
|
||||||
|
map <a-r> tab_shift 1
|
||||||
|
map <a-l> tab_shift -1
|
||||||
|
|
||||||
|
# Sorting
|
||||||
|
map or set sort_reverse!
|
||||||
|
map oz set sort=random
|
||||||
|
map os chain set sort=size; set sort_reverse=False
|
||||||
|
map ob chain set sort=basename; set sort_reverse=False
|
||||||
|
map on chain set sort=natural; set sort_reverse=False
|
||||||
|
map om chain set sort=mtime; set sort_reverse=False
|
||||||
|
map oc chain set sort=ctime; set sort_reverse=False
|
||||||
|
map oa chain set sort=atime; set sort_reverse=False
|
||||||
|
map ot chain set sort=type; set sort_reverse=False
|
||||||
|
map oe chain set sort=extension; set sort_reverse=False
|
||||||
|
|
||||||
|
map oS chain set sort=size; set sort_reverse=True
|
||||||
|
map oB chain set sort=basename; set sort_reverse=True
|
||||||
|
map oN chain set sort=natural; set sort_reverse=True
|
||||||
|
map oM chain set sort=mtime; set sort_reverse=True
|
||||||
|
map oC chain set sort=ctime; set sort_reverse=True
|
||||||
|
map oA chain set sort=atime; set sort_reverse=True
|
||||||
|
map oT chain set sort=type; set sort_reverse=True
|
||||||
|
map oE chain set sort=extension; set sort_reverse=True
|
||||||
|
|
||||||
|
map dc get_cumulative_size
|
||||||
|
|
||||||
|
# Settings
|
||||||
|
map zc set collapse_preview!
|
||||||
|
map zd set sort_directories_first!
|
||||||
|
map zh set show_hidden!
|
||||||
|
map <C-h> set show_hidden!
|
||||||
|
copymap <C-h> <backspace>
|
||||||
|
copymap <backspace> <backspace2>
|
||||||
|
map zI set flushinput!
|
||||||
|
map zi set preview_images!
|
||||||
|
map zm set mouse_enabled!
|
||||||
|
map zp set preview_files!
|
||||||
|
map zP set preview_directories!
|
||||||
|
map zs set sort_case_insensitive!
|
||||||
|
map zu set autoupdate_cumulative_size!
|
||||||
|
map zv set use_preview_script!
|
||||||
|
map zf console filter%space
|
||||||
|
copymap zf zz
|
||||||
|
|
||||||
|
# Filter stack
|
||||||
|
map .d filter_stack add type d
|
||||||
|
map .f filter_stack add type f
|
||||||
|
map .l filter_stack add type l
|
||||||
|
map .m console filter_stack add mime%space
|
||||||
|
map .n console filter_stack add name%space
|
||||||
|
map .# console filter_stack add hash%space
|
||||||
|
map ." filter_stack add duplicate
|
||||||
|
map .' filter_stack add unique
|
||||||
|
map .| filter_stack add or
|
||||||
|
map .& filter_stack add and
|
||||||
|
map .! filter_stack add not
|
||||||
|
map .r filter_stack rotate
|
||||||
|
map .c filter_stack clear
|
||||||
|
map .* filter_stack decompose
|
||||||
|
map .p filter_stack pop
|
||||||
|
map .. filter_stack show
|
||||||
|
|
||||||
|
# Bookmarks
|
||||||
|
map `<any> enter_bookmark %any
|
||||||
|
map '<any> enter_bookmark %any
|
||||||
|
map m<any> set_bookmark %any
|
||||||
|
map um<any> unset_bookmark %any
|
||||||
|
|
||||||
|
map m<bg> draw_bookmarks
|
||||||
|
copymap m<bg> um<bg> `<bg> '<bg>
|
||||||
|
|
||||||
|
# Generate all the chmod bindings with some python help:
|
||||||
|
eval for arg in "rwxXst": cmd("map +u{0} shell -f chmod u+{0} %s".format(arg))
|
||||||
|
eval for arg in "rwxXst": cmd("map +g{0} shell -f chmod g+{0} %s".format(arg))
|
||||||
|
eval for arg in "rwxXst": cmd("map +o{0} shell -f chmod o+{0} %s".format(arg))
|
||||||
|
eval for arg in "rwxXst": cmd("map +a{0} shell -f chmod a+{0} %s".format(arg))
|
||||||
|
eval for arg in "rwxXst": cmd("map +{0} shell -f chmod u+{0} %s".format(arg))
|
||||||
|
|
||||||
|
eval for arg in "rwxXst": cmd("map -u{0} shell -f chmod u-{0} %s".format(arg))
|
||||||
|
eval for arg in "rwxXst": cmd("map -g{0} shell -f chmod g-{0} %s".format(arg))
|
||||||
|
eval for arg in "rwxXst": cmd("map -o{0} shell -f chmod o-{0} %s".format(arg))
|
||||||
|
eval for arg in "rwxXst": cmd("map -a{0} shell -f chmod a-{0} %s".format(arg))
|
||||||
|
eval for arg in "rwxXst": cmd("map -{0} shell -f chmod u-{0} %s".format(arg))
|
||||||
|
|
||||||
|
# ===================================================================
|
||||||
|
# == Define keys for the console
|
||||||
|
# ===================================================================
|
||||||
|
# Note: Unmapped keys are passed directly to the console.
|
||||||
|
|
||||||
|
# Basic
|
||||||
|
cmap <tab> eval fm.ui.console.tab()
|
||||||
|
cmap <s-tab> eval fm.ui.console.tab(-1)
|
||||||
|
cmap <ESC> eval fm.ui.console.close()
|
||||||
|
cmap <CR> eval fm.ui.console.execute()
|
||||||
|
cmap <C-l> redraw_window
|
||||||
|
|
||||||
|
copycmap <ESC> <C-c>
|
||||||
|
copycmap <CR> <C-j>
|
||||||
|
|
||||||
|
# Move around
|
||||||
|
cmap <up> eval fm.ui.console.history_move(-1)
|
||||||
|
cmap <down> eval fm.ui.console.history_move(1)
|
||||||
|
cmap <left> eval fm.ui.console.move(left=1)
|
||||||
|
cmap <right> eval fm.ui.console.move(right=1)
|
||||||
|
cmap <home> eval fm.ui.console.move(right=0, absolute=True)
|
||||||
|
cmap <end> eval fm.ui.console.move(right=-1, absolute=True)
|
||||||
|
cmap <a-b> eval fm.ui.console.move_word(left=1)
|
||||||
|
cmap <a-f> eval fm.ui.console.move_word(right=1)
|
||||||
|
|
||||||
|
copycmap <a-b> <a-left>
|
||||||
|
copycmap <a-f> <a-right>
|
||||||
|
|
||||||
|
# Line Editing
|
||||||
|
cmap <backspace> eval fm.ui.console.delete(-1)
|
||||||
|
cmap <delete> eval fm.ui.console.delete(0)
|
||||||
|
cmap <C-w> eval fm.ui.console.delete_word()
|
||||||
|
cmap <A-d> eval fm.ui.console.delete_word(backward=False)
|
||||||
|
cmap <C-k> eval fm.ui.console.delete_rest(1)
|
||||||
|
cmap <C-u> eval fm.ui.console.delete_rest(-1)
|
||||||
|
cmap <C-y> eval fm.ui.console.paste()
|
||||||
|
|
||||||
|
# And of course the emacs way
|
||||||
|
copycmap <ESC> <C-g>
|
||||||
|
copycmap <up> <C-p>
|
||||||
|
copycmap <down> <C-n>
|
||||||
|
copycmap <left> <C-b>
|
||||||
|
copycmap <right> <C-f>
|
||||||
|
copycmap <home> <C-a>
|
||||||
|
copycmap <end> <C-e>
|
||||||
|
copycmap <delete> <C-d>
|
||||||
|
copycmap <backspace> <C-h>
|
||||||
|
|
||||||
|
# Note: There are multiple ways to express backspaces. <backspace> (code 263)
|
||||||
|
# and <backspace2> (code 127). To be sure, use both.
|
||||||
|
copycmap <backspace> <backspace2>
|
||||||
|
|
||||||
|
# This special expression allows typing in numerals:
|
||||||
|
cmap <allow_quantifiers> false
|
||||||
|
|
||||||
|
# ===================================================================
|
||||||
|
# == Pager Keybindings
|
||||||
|
# ===================================================================
|
||||||
|
|
||||||
|
# Movement
|
||||||
|
pmap <down> pager_move down=1
|
||||||
|
pmap <up> pager_move up=1
|
||||||
|
pmap <left> pager_move left=4
|
||||||
|
pmap <right> pager_move right=4
|
||||||
|
pmap <home> pager_move to=0
|
||||||
|
pmap <end> pager_move to=-1
|
||||||
|
pmap <pagedown> pager_move down=1.0 pages=True
|
||||||
|
pmap <pageup> pager_move up=1.0 pages=True
|
||||||
|
pmap <C-d> pager_move down=0.5 pages=True
|
||||||
|
pmap <C-u> pager_move up=0.5 pages=True
|
||||||
|
|
||||||
|
copypmap <UP> k <C-p>
|
||||||
|
copypmap <DOWN> j <C-n> <CR>
|
||||||
|
copypmap <LEFT> h
|
||||||
|
copypmap <RIGHT> l
|
||||||
|
copypmap <HOME> g
|
||||||
|
copypmap <END> G
|
||||||
|
copypmap <C-d> d
|
||||||
|
copypmap <C-u> u
|
||||||
|
copypmap <PAGEDOWN> n f <C-F> <Space>
|
||||||
|
copypmap <PAGEUP> p b <C-B>
|
||||||
|
|
||||||
|
# Basic
|
||||||
|
pmap <C-l> redraw_window
|
||||||
|
pmap <ESC> pager_close
|
||||||
|
copypmap <ESC> q Q i <F3>
|
||||||
|
pmap E edit_file
|
||||||
|
|
||||||
|
# ===================================================================
|
||||||
|
# == Taskview Keybindings
|
||||||
|
# ===================================================================
|
||||||
|
|
||||||
|
# Movement
|
||||||
|
tmap <up> taskview_move up=1
|
||||||
|
tmap <down> taskview_move down=1
|
||||||
|
tmap <home> taskview_move to=0
|
||||||
|
tmap <end> taskview_move to=-1
|
||||||
|
tmap <pagedown> taskview_move down=1.0 pages=True
|
||||||
|
tmap <pageup> taskview_move up=1.0 pages=True
|
||||||
|
tmap <C-d> taskview_move down=0.5 pages=True
|
||||||
|
tmap <C-u> taskview_move up=0.5 pages=True
|
||||||
|
|
||||||
|
copytmap <UP> k <C-p>
|
||||||
|
copytmap <DOWN> j <C-n> <CR>
|
||||||
|
copytmap <HOME> g
|
||||||
|
copytmap <END> G
|
||||||
|
copytmap <C-u> u
|
||||||
|
copytmap <PAGEDOWN> n f <C-F> <Space>
|
||||||
|
copytmap <PAGEUP> p b <C-B>
|
||||||
|
|
||||||
|
# Changing priority and deleting tasks
|
||||||
|
tmap J eval -q fm.ui.taskview.task_move(-1)
|
||||||
|
tmap K eval -q fm.ui.taskview.task_move(0)
|
||||||
|
tmap dd eval -q fm.ui.taskview.task_remove()
|
||||||
|
tmap <pagedown> eval -q fm.ui.taskview.task_move(-1)
|
||||||
|
tmap <pageup> eval -q fm.ui.taskview.task_move(0)
|
||||||
|
tmap <delete> eval -q fm.ui.taskview.task_remove()
|
||||||
|
|
||||||
|
# Basic
|
||||||
|
tmap <C-l> redraw_window
|
||||||
|
tmap <ESC> taskview_close
|
||||||
|
copytmap <ESC> q Q w <C-c>
|
||||||
132
.config/rofi/app_launcher.rasi
Executable file
@@ -0,0 +1,132 @@
|
|||||||
|
// Config //
|
||||||
|
configuration {
|
||||||
|
modi: "drun,filebrowser,window,run";
|
||||||
|
show-icons: true;
|
||||||
|
display-drun: "";
|
||||||
|
display-run: "";
|
||||||
|
display-filebrowser: "";
|
||||||
|
display-window: "";
|
||||||
|
drun-display-format: "{name}";
|
||||||
|
window-format: "{w}{t}";
|
||||||
|
icon-theme: "Papirus";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Theme //
|
||||||
|
@theme "~/.config/rofi/themes/theme.rasi"
|
||||||
|
|
||||||
|
|
||||||
|
// Main //
|
||||||
|
window {
|
||||||
|
height: 506px; // 16:9
|
||||||
|
width: 900px; // 16:9
|
||||||
|
transparency: "real";
|
||||||
|
fullscreen: false;
|
||||||
|
enabled: true;
|
||||||
|
cursor: "default";
|
||||||
|
spacing: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
border: 2px;
|
||||||
|
border-radius: 15px;
|
||||||
|
border-color: @main-br;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
mainbox {
|
||||||
|
enabled: true;
|
||||||
|
spacing: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
orientation: vertical;
|
||||||
|
children: [ "inputbar" , "listbox" ];
|
||||||
|
background-color: transparent;
|
||||||
|
background-image: url("~/.config/hypr/theme/current_background.jpg", width);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Inputs //
|
||||||
|
inputbar {
|
||||||
|
enabled: true;
|
||||||
|
spacing: 0px;
|
||||||
|
padding: 40px;
|
||||||
|
children: [ "entry" ];
|
||||||
|
background-color: @main-bg;
|
||||||
|
}
|
||||||
|
entry {
|
||||||
|
border-radius: 30px;
|
||||||
|
enabled: true;
|
||||||
|
spacing: 0px;
|
||||||
|
padding: 20px;
|
||||||
|
text-color: @main-fg;
|
||||||
|
background-color: @main-bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Lists //
|
||||||
|
listbox {
|
||||||
|
padding: 30px;
|
||||||
|
spacing: 0px;
|
||||||
|
orientation: horizontal;
|
||||||
|
children: [ "listview" , "mode-switcher" ];
|
||||||
|
background-color: @main-bg;
|
||||||
|
}
|
||||||
|
listview {
|
||||||
|
padding: 0px;
|
||||||
|
spacing: 10px;
|
||||||
|
enabled: true;
|
||||||
|
columns: 2;
|
||||||
|
cycle: true;
|
||||||
|
dynamic: true;
|
||||||
|
scrollbar: false;
|
||||||
|
layout: vertical;
|
||||||
|
reverse: false;
|
||||||
|
fixed-height: true;
|
||||||
|
fixed-columns: true;
|
||||||
|
cursor: "default";
|
||||||
|
background-color: transparent;
|
||||||
|
text-color: @main-fg;
|
||||||
|
}
|
||||||
|
mode-switcher {
|
||||||
|
orientation: vertical;
|
||||||
|
width: 95px;
|
||||||
|
enabled: true;
|
||||||
|
padding: 15px;
|
||||||
|
spacing: 10px;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
button {
|
||||||
|
cursor: pointer;
|
||||||
|
border-radius: 20px;
|
||||||
|
background-color: @main-bg;
|
||||||
|
text-color: @main-fg;
|
||||||
|
}
|
||||||
|
button selected {
|
||||||
|
background-color: @main-fg;
|
||||||
|
text-color: @main-bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Elements //
|
||||||
|
element {
|
||||||
|
enabled: true;
|
||||||
|
spacing: 20px;
|
||||||
|
padding: 9px;
|
||||||
|
border-radius: 25px;
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: transparent;
|
||||||
|
text-color: @main-fg;
|
||||||
|
}
|
||||||
|
element selected.normal {
|
||||||
|
background-color: @select-bg;
|
||||||
|
text-color: @select-fg;
|
||||||
|
}
|
||||||
|
element-icon {
|
||||||
|
size: 47px;
|
||||||
|
cursor: inherit;
|
||||||
|
background-color: transparent;
|
||||||
|
text-color: inherit;
|
||||||
|
}
|
||||||
|
element-text {
|
||||||
|
vertical-align: 0.5;
|
||||||
|
horizontal-align: 0.0;
|
||||||
|
cursor: inherit;
|
||||||
|
background-color: transparent;
|
||||||
|
text-color: inherit;
|
||||||
|
}
|
||||||
98
.config/rofi/clipboard.rasi
Executable file
@@ -0,0 +1,98 @@
|
|||||||
|
// Config //
|
||||||
|
configuration {
|
||||||
|
modi: "drun";
|
||||||
|
show-icons: false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Theme //
|
||||||
|
@theme "~/.config/rofi/themes/theme.rasi"
|
||||||
|
|
||||||
|
// Main //
|
||||||
|
window {
|
||||||
|
height: 50%;
|
||||||
|
width: 20%;
|
||||||
|
location: center;
|
||||||
|
transparency: "real";
|
||||||
|
fullscreen: false;
|
||||||
|
enabled: true;
|
||||||
|
cursor: "default";
|
||||||
|
spacing: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
border: 2px;
|
||||||
|
border-radius: 15px;
|
||||||
|
border-color: @main-br;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
mainbox {
|
||||||
|
enabled: true;
|
||||||
|
spacing: 0px;
|
||||||
|
orientation: vertical;
|
||||||
|
children: [ "inputbar" , "listbox" ];
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Inputs //
|
||||||
|
inputbar {
|
||||||
|
enabled: true;
|
||||||
|
padding: 7px;
|
||||||
|
children: [ "entry" ];
|
||||||
|
background-color: @main-bg;
|
||||||
|
}
|
||||||
|
entry {
|
||||||
|
enabled: true;
|
||||||
|
padding: 40px;
|
||||||
|
text-color: @main-fg;
|
||||||
|
background-color: @main-bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Lists //
|
||||||
|
listbox {
|
||||||
|
spacing: 0px;
|
||||||
|
padding: 6px;
|
||||||
|
children: [ "listview" ];
|
||||||
|
background-color: @main-bg;
|
||||||
|
}
|
||||||
|
listview {
|
||||||
|
enabled: true;
|
||||||
|
columns: 1;
|
||||||
|
cycle: true;
|
||||||
|
dynamic: true;
|
||||||
|
scrollbar: false;
|
||||||
|
layout: vertical;
|
||||||
|
reverse: false;
|
||||||
|
fixed-height: false;
|
||||||
|
fixed-columns: true;
|
||||||
|
cursor: "default";
|
||||||
|
background-color: transparent;
|
||||||
|
text-color: @main-fg;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Elements //
|
||||||
|
element {
|
||||||
|
enabled: true;
|
||||||
|
spacing: 0px;
|
||||||
|
padding: 12px;
|
||||||
|
border-radius: 10px;
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: transparent;
|
||||||
|
text-color: @main-fg;
|
||||||
|
}
|
||||||
|
@media(max-aspect-ratio: 1.8) {
|
||||||
|
element {
|
||||||
|
orientation: vertical;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
element selected.normal {
|
||||||
|
background-color: @select-bg;
|
||||||
|
text-color: @select-fg;
|
||||||
|
}
|
||||||
|
element-text {
|
||||||
|
vertical-align: 0.0;
|
||||||
|
horizontal-align: 0.0;
|
||||||
|
cursor: inherit;
|
||||||
|
background-color: transparent;
|
||||||
|
text-color: inherit;
|
||||||
|
}
|
||||||
151
.config/rofi/main.rasi
Executable file
@@ -0,0 +1,151 @@
|
|||||||
|
// Config //
|
||||||
|
configuration {
|
||||||
|
modi: "emoji:rofimoji,calc,drun,filebrowser,run";
|
||||||
|
show-icons: true;
|
||||||
|
display-drun: "";
|
||||||
|
display-run: "";
|
||||||
|
display-filebrowser: "";
|
||||||
|
display-window: "";
|
||||||
|
drun-display-format: "{name}";
|
||||||
|
window-format: "{w}{t}";
|
||||||
|
icon-theme: "Papirus";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Theme //
|
||||||
|
@theme "~/.config/rofi/themes/theme.rasi"
|
||||||
|
|
||||||
|
|
||||||
|
// Main //
|
||||||
|
window {
|
||||||
|
height: 506px; // 16:9
|
||||||
|
width: 900px; // 16:9
|
||||||
|
location: center;
|
||||||
|
transparency: "real";
|
||||||
|
fullscreen: false;
|
||||||
|
enabled: true;
|
||||||
|
cursor: "default";
|
||||||
|
spacing: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
border: 2px;
|
||||||
|
border-radius: 15px;
|
||||||
|
border-color: @main-br;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
mainbox {
|
||||||
|
enabled: true;
|
||||||
|
spacing: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
orientation: vertical;
|
||||||
|
children: [ "inputbar", "listbox" ];
|
||||||
|
background-color: transparent;
|
||||||
|
background-image: url("~/.config/hypr/theme/current_background.jpg", width);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Message //
|
||||||
|
message {
|
||||||
|
padding: 0px 55px;
|
||||||
|
background-color: @main-bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
textbox {
|
||||||
|
enabled: true;
|
||||||
|
border-radius: 15px;
|
||||||
|
spacing: 0px;
|
||||||
|
padding: 20px;
|
||||||
|
text-color: @main-fg;
|
||||||
|
background-color: @main-bg;
|
||||||
|
border: 1px;
|
||||||
|
border-color: @main-br;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Inputs //
|
||||||
|
inputbar {
|
||||||
|
enabled: true;
|
||||||
|
spacing: 0px;
|
||||||
|
padding: 40px;
|
||||||
|
children: [ "entry" ];
|
||||||
|
background-color: @main-bg;
|
||||||
|
}
|
||||||
|
entry {
|
||||||
|
enabled: true;
|
||||||
|
border-radius: 15px;
|
||||||
|
spacing: 0px;
|
||||||
|
padding: 20px;
|
||||||
|
text-color: @main-fg;
|
||||||
|
background-color: @main-bg;
|
||||||
|
border: 1px;
|
||||||
|
border-color: @main-br;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Lists //
|
||||||
|
listbox {
|
||||||
|
padding: 30px;
|
||||||
|
spacing: 0px;
|
||||||
|
orientation: horizontal;
|
||||||
|
children: [ "listview" ];
|
||||||
|
background-color: @main-bg;
|
||||||
|
}
|
||||||
|
listview {
|
||||||
|
padding: 0px;
|
||||||
|
spacing: 10px;
|
||||||
|
enabled: true;
|
||||||
|
columns: 2;
|
||||||
|
cycle: true;
|
||||||
|
dynamic: true;
|
||||||
|
scrollbar: false;
|
||||||
|
layout: vertical;
|
||||||
|
reverse: false;
|
||||||
|
fixed-height: true;
|
||||||
|
fixed-columns: true;
|
||||||
|
cursor: "default";
|
||||||
|
background-color: transparent;
|
||||||
|
text-color: @main-fg;
|
||||||
|
}
|
||||||
|
mode-switcher {
|
||||||
|
orientation: vertical;
|
||||||
|
width: 95px;
|
||||||
|
enabled: true;
|
||||||
|
padding: 15px;
|
||||||
|
spacing: 10px;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
button {
|
||||||
|
cursor: pointer;
|
||||||
|
border-radius: 20px;
|
||||||
|
background-color: @main-bg;
|
||||||
|
text-color: @main-fg;
|
||||||
|
}
|
||||||
|
button selected {
|
||||||
|
background-color: @main-fg;
|
||||||
|
text-color: @main-bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Elements //
|
||||||
|
element {
|
||||||
|
enabled: true;
|
||||||
|
spacing: 20px;
|
||||||
|
padding: 9px;
|
||||||
|
border-radius: 25px;
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: transparent;
|
||||||
|
text-color: @main-fg;
|
||||||
|
}
|
||||||
|
element selected.normal {
|
||||||
|
background-color: @select-bg;
|
||||||
|
text-color: @select-fg;
|
||||||
|
}
|
||||||
|
element-icon {
|
||||||
|
size: 47px;
|
||||||
|
cursor: inherit;
|
||||||
|
background-color: transparent;
|
||||||
|
text-color: inherit;
|
||||||
|
}
|
||||||
|
element-text {
|
||||||
|
vertical-align: 0.5;
|
||||||
|
horizontal-align: 0.0;
|
||||||
|
cursor: inherit;
|
||||||
|
background-color: transparent;
|
||||||
|
text-color: inherit;
|
||||||
|
}
|
||||||
14
.config/rofi/themes/theme.rasi
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* https://github.com/catppuccin/rofi/
|
||||||
|
*/
|
||||||
|
|
||||||
|
* {
|
||||||
|
main-bg: #11111bd6;
|
||||||
|
main-fg: #cdd6f4ff;
|
||||||
|
main-br: #7dc4e4ff; /*#cba6f7ff;*/
|
||||||
|
main-ex: #f5e0dcff;
|
||||||
|
select-bg: #b4befeff;
|
||||||
|
select-fg: #11111bff;
|
||||||
|
separatorcolor: transparent;
|
||||||
|
border-color: transparent;
|
||||||
|
}
|
||||||
3
.config/rofimoji.rc
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
action = copy
|
||||||
|
files = [emojis, gitmoji, hebrew, fontawesome6, math]
|
||||||
|
skin-tone=ask
|
||||||
147
.config/starship.toml
Executable 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 = "ﯣ "
|
||||||
9
.config/swaylock/swaylock.conf
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
color=550000
|
||||||
|
clock
|
||||||
|
indicator
|
||||||
|
effect-scale=0.4
|
||||||
|
effect-vignette=0.2:0.5
|
||||||
|
effect-blur=4x2
|
||||||
|
timestr=%k:%M
|
||||||
|
datestr=%a %e.%m.%Y
|
||||||
|
image=~/.config/hypr/theme/current_background.jpg
|
||||||
91
.config/swaync/config.json
Executable file
@@ -0,0 +1,91 @@
|
|||||||
|
{
|
||||||
|
"$schema": "/etc/xdg/swaync/configSchema.json",
|
||||||
|
"positionX": "right",
|
||||||
|
"positionY": "top",
|
||||||
|
"layer": "overlay",
|
||||||
|
"control-center-layer": "top",
|
||||||
|
"layer-shell": true,
|
||||||
|
"cssPriority": "application",
|
||||||
|
"control-center-margin-top": 0,
|
||||||
|
"control-center-margin-bottom": 0,
|
||||||
|
"control-center-margin-right": 0,
|
||||||
|
"control-center-margin-left": 0,
|
||||||
|
"notification-2fa-action": true,
|
||||||
|
"notification-inline-replies": true,
|
||||||
|
"notification-icon-size": 64,
|
||||||
|
"notification-body-image-height": 100,
|
||||||
|
"notification-body-image-width": 200,
|
||||||
|
"timeout": 10,
|
||||||
|
"timeout-low": 5,
|
||||||
|
"timeout-critical": 0,
|
||||||
|
"fit-to-screen": true,
|
||||||
|
"control-center-width": 500,
|
||||||
|
"control-center-height": 600,
|
||||||
|
"notification-window-width": 500,
|
||||||
|
"keyboard-shortcuts": true,
|
||||||
|
"image-visibility": "when-available",
|
||||||
|
"transition-time": 200,
|
||||||
|
"hide-on-clear": true,
|
||||||
|
"hide-on-action": true,
|
||||||
|
"script-fail-notify": true,
|
||||||
|
"scripts-example": {
|
||||||
|
"example-script": {
|
||||||
|
"exec": "echo 'Custom config?'",
|
||||||
|
"urgency": "Normal"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"widgets": [
|
||||||
|
"buttons-grid",
|
||||||
|
"inhibitors",
|
||||||
|
"title",
|
||||||
|
"dnd",
|
||||||
|
"notifications"
|
||||||
|
],
|
||||||
|
"widget-config": {
|
||||||
|
"inhibitors": {
|
||||||
|
"text": "Inhibitors",
|
||||||
|
"button-text": "Clear All",
|
||||||
|
"clear-all-button": true
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"text": "Notifications",
|
||||||
|
"clear-all-button": true,
|
||||||
|
"button-text": "Clear All"
|
||||||
|
},
|
||||||
|
"dnd": {
|
||||||
|
"text": "Do Not Disturb"
|
||||||
|
},
|
||||||
|
"label": {
|
||||||
|
"max-lines": 5,
|
||||||
|
"text": "Label Text"
|
||||||
|
},
|
||||||
|
"mpris": {
|
||||||
|
"image-size": 96,
|
||||||
|
"image-radius": 12
|
||||||
|
},
|
||||||
|
"buttons-grid": {
|
||||||
|
"actions": [
|
||||||
|
{
|
||||||
|
"label": "",
|
||||||
|
"command": "systemctl poweroff"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "",
|
||||||
|
"command": "systemctl reboot"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "",
|
||||||
|
"command": "systemctl suspend"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "",
|
||||||
|
"command": "~/.config/hypr/scripts/lock.sh"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "",
|
||||||
|
"command": "hyprctl dispatch exit 0"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
294
.config/swaync/style.css
Executable file
@@ -0,0 +1,294 @@
|
|||||||
|
* {
|
||||||
|
all: unset;
|
||||||
|
font-size: 14px;
|
||||||
|
font-family: "FiraCode Nerd Font";
|
||||||
|
transition: 200ms;
|
||||||
|
}
|
||||||
|
|
||||||
|
.blank-window {
|
||||||
|
background: alpha(black, 0.25);
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-buttons-grid {
|
||||||
|
font-size: x-large;
|
||||||
|
padding: 8px;
|
||||||
|
margin: 20px 0px;
|
||||||
|
border-radius: 12px;
|
||||||
|
background: #363a4f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-buttons-grid>flowbox>flowboxchild>button {
|
||||||
|
margin: 3px;
|
||||||
|
background: #343b58;
|
||||||
|
border-radius: 12px;
|
||||||
|
color: #cad3f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-buttons-grid>flowbox>flowboxchild>button:hover {
|
||||||
|
/* background: @noti-bg-hover; */
|
||||||
|
color: #8aadf4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background {
|
||||||
|
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px #363a4f;
|
||||||
|
border-radius: 12.6px;
|
||||||
|
margin: 18px;
|
||||||
|
background-color: #24273a;
|
||||||
|
color: #cad3f5;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification {
|
||||||
|
padding: 7px;
|
||||||
|
border-radius: 12.6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification.critical {
|
||||||
|
box-shadow: inset 0 0 7px 0 #ed8796;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification .notification-content {
|
||||||
|
margin: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification .notification-content .summary {
|
||||||
|
color: #cad3f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification .notification-content .time {
|
||||||
|
color: #a5adcb;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification .notification-content .body {
|
||||||
|
color: #cad3f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * {
|
||||||
|
min-height: 3.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action {
|
||||||
|
border-radius: 7px;
|
||||||
|
color: #cad3f5;
|
||||||
|
background-color: #363a4f;
|
||||||
|
box-shadow: inset 0 0 0 1px #494d64;
|
||||||
|
margin: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px #494d64;
|
||||||
|
background-color: #363a4f;
|
||||||
|
color: #cad3f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:active {
|
||||||
|
box-shadow: inset 0 0 0 1px #494d64;
|
||||||
|
background-color: #7dc4e4;
|
||||||
|
color: #cad3f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .close-button {
|
||||||
|
margin: 7px;
|
||||||
|
padding: 2px;
|
||||||
|
border-radius: 6.3px;
|
||||||
|
color: #24273a;
|
||||||
|
background-color: #ed8796;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .close-button:hover {
|
||||||
|
background-color: #ee99a0;
|
||||||
|
color: #24273a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .close-button:active {
|
||||||
|
background-color: #ed8796;
|
||||||
|
color: #24273a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center {
|
||||||
|
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px #363a4f;
|
||||||
|
border-radius: 12.6px;
|
||||||
|
margin: 18px;
|
||||||
|
background-color: #24273a;
|
||||||
|
color: #cad3f5;
|
||||||
|
padding: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .widget-title {
|
||||||
|
color: #cad3f5;
|
||||||
|
font-size: 1.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .widget-title button {
|
||||||
|
border-radius: 7px;
|
||||||
|
color: #cad3f5;
|
||||||
|
background-color: #363a4f;
|
||||||
|
box-shadow: inset 0 0 0 1px #494d64;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .widget-title button:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px #494d64;
|
||||||
|
background-color: #5b6078;
|
||||||
|
color: #cad3f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .widget-title button:active {
|
||||||
|
box-shadow: inset 0 0 0 1px #494d64;
|
||||||
|
background-color: #7dc4e4;
|
||||||
|
color: #24273a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background {
|
||||||
|
border-radius: 7px;
|
||||||
|
color: #cad3f5;
|
||||||
|
background-color: #363a4f;
|
||||||
|
box-shadow: inset 0 0 0 1px #494d64;
|
||||||
|
margin-top: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification {
|
||||||
|
padding: 7px;
|
||||||
|
border-radius: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification.critical {
|
||||||
|
box-shadow: inset 0 0 7px 0 #ed8796;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification .notification-content {
|
||||||
|
margin: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification .notification-content .summary {
|
||||||
|
color: #cad3f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification .notification-content .time {
|
||||||
|
color: #a5adcb;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification .notification-content .body {
|
||||||
|
color: #cad3f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification > *:last-child > * {
|
||||||
|
min-height: 3.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action {
|
||||||
|
border-radius: 7px;
|
||||||
|
color: #cad3f5;
|
||||||
|
background-color: #181926;
|
||||||
|
box-shadow: inset 0 0 0 1px #494d64;
|
||||||
|
margin: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px #494d64;
|
||||||
|
background-color: #363a4f;
|
||||||
|
color: #cad3f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:active {
|
||||||
|
box-shadow: inset 0 0 0 1px #494d64;
|
||||||
|
background-color: #7dc4e4;
|
||||||
|
color: #cad3f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .close-button {
|
||||||
|
margin: 7px;
|
||||||
|
padding: 2px;
|
||||||
|
border-radius: 6.3px;
|
||||||
|
color: #24273a;
|
||||||
|
background-color: #ee99a0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .close-button:hover {
|
||||||
|
background-color: #ed8796;
|
||||||
|
color: #24273a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .close-button:active {
|
||||||
|
background-color: #ed8796;
|
||||||
|
color: #24273a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px #494d64;
|
||||||
|
background-color: #8087a2;
|
||||||
|
color: #cad3f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background:active {
|
||||||
|
box-shadow: inset 0 0 0 1px #494d64;
|
||||||
|
background-color: #7dc4e4;
|
||||||
|
color: #cad3f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
progressbar,
|
||||||
|
progress,
|
||||||
|
trough {
|
||||||
|
border-radius: 12.6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
progressbar {
|
||||||
|
box-shadow: inset 0 0 0 1px #494d64;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification.critical progress {
|
||||||
|
background-color: #ed8796;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification.low progress,
|
||||||
|
.notification.normal progress {
|
||||||
|
background-color: #8aadf4;
|
||||||
|
}
|
||||||
|
|
||||||
|
trough {
|
||||||
|
background-color: #363a4f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center trough {
|
||||||
|
background-color: #494d64;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center-dnd {
|
||||||
|
margin-top: 5px;
|
||||||
|
border-radius: 8px;
|
||||||
|
background: #363a4f;
|
||||||
|
border: 1px solid #494d64;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center-dnd:checked {
|
||||||
|
background: #363a4f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center-dnd slider {
|
||||||
|
background: #494d64;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-dnd {
|
||||||
|
margin: 0px;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-dnd > switch {
|
||||||
|
font-size: initial;
|
||||||
|
border-radius: 8px;
|
||||||
|
background: #363a4f;
|
||||||
|
border: 1px solid #494d64;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-dnd > switch:checked {
|
||||||
|
background: #363a4f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-dnd > switch slider {
|
||||||
|
background: #494d64;
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px solid #6e738d;
|
||||||
|
}
|
||||||
15
.config/user-dirs.dirs
Executable file
@@ -0,0 +1,15 @@
|
|||||||
|
# This file is written by xdg-user-dirs-update
|
||||||
|
# If you want to change or add directories, just edit the line you're
|
||||||
|
# interested in. All local changes will be retained on the next run.
|
||||||
|
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
|
||||||
|
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
|
||||||
|
# absolute path. No other format is supported.
|
||||||
|
#
|
||||||
|
XDG_DESKTOP_DIR="$HOME/Desktop"
|
||||||
|
XDG_DOWNLOAD_DIR="$HOME/Data/Downloads"
|
||||||
|
XDG_TEMPLATES_DIR="$HOME/Templates"
|
||||||
|
XDG_PUBLICSHARE_DIR="$HOME/Public"
|
||||||
|
XDG_DOCUMENTS_DIR="$HOME/Data/Documents"
|
||||||
|
XDG_MUSIC_DIR="$HOME/Data/Music"
|
||||||
|
XDG_PICTURES_DIR="$HOME/Data/Pictures"
|
||||||
|
XDG_VIDEOS_DIR="$HOME/Data/Videos"
|
||||||
37
.config/waybar/colors.css
Executable file
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* Catppuccin Frappe palette
|
||||||
|
* Maintainer: rubyowo
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
@define-color base #303446;
|
||||||
|
@define-color mantle #292c3c;
|
||||||
|
@define-color crust #232634;
|
||||||
|
|
||||||
|
@define-color text #c6d0f5;
|
||||||
|
@define-color subtext0 #a5adce;
|
||||||
|
@define-color subtext1 #b5bfe2;
|
||||||
|
|
||||||
|
@define-color surface0 #414559;
|
||||||
|
@define-color surface1 #51576d;
|
||||||
|
@define-color surface2 #626880;
|
||||||
|
|
||||||
|
@define-color overlay0 #737994;
|
||||||
|
@define-color overlay1 #838ba7;
|
||||||
|
@define-color overlay2 #949cbb;
|
||||||
|
|
||||||
|
@define-color blue #8caaee;
|
||||||
|
@define-color lavender #babbf1;
|
||||||
|
@define-color sapphire #85c1dc;
|
||||||
|
@define-color sky #99d1db;
|
||||||
|
@define-color teal #81c8be;
|
||||||
|
@define-color green #a6d189;
|
||||||
|
@define-color yellow #e5c890;
|
||||||
|
@define-color peach #ef9f76;
|
||||||
|
@define-color maroon #ea999c;
|
||||||
|
@define-color red #e78284;
|
||||||
|
@define-color mauve #ca9ee6;
|
||||||
|
@define-color pink #f4b8e4;
|
||||||
|
@define-color flamingo #eebebe;
|
||||||
|
@define-color rosewater #f2d5cf;
|
||||||
152
.config/waybar/config
Executable file
@@ -0,0 +1,152 @@
|
|||||||
|
{
|
||||||
|
"layer": "top",
|
||||||
|
"position": "top",
|
||||||
|
"height": 40,
|
||||||
|
|
||||||
|
"modules-left": [
|
||||||
|
"hyprland/workspaces",
|
||||||
|
"hyprland/window",
|
||||||
|
],
|
||||||
|
"modules-center": [
|
||||||
|
"clock",
|
||||||
|
],
|
||||||
|
"modules-right": [
|
||||||
|
"tray",
|
||||||
|
"custom/playerctl",
|
||||||
|
"cpu",
|
||||||
|
"memory",
|
||||||
|
"network",
|
||||||
|
"pulseaudio",
|
||||||
|
"battery",
|
||||||
|
"custom/power",
|
||||||
|
],
|
||||||
|
|
||||||
|
"hyprland/workspaces": {
|
||||||
|
"disable-scroll": true,
|
||||||
|
"all-outputs": true,
|
||||||
|
"on-click": "activate",
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"1": "1",
|
||||||
|
"2": "2",
|
||||||
|
"3": "3",
|
||||||
|
"4": "4",
|
||||||
|
"5": "5",
|
||||||
|
"6": "6",
|
||||||
|
"7": "7",
|
||||||
|
"8": "8",
|
||||||
|
"9": "9",
|
||||||
|
"10": "10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprland/window": {
|
||||||
|
"format": "{}"
|
||||||
|
},
|
||||||
|
|
||||||
|
"clock": {
|
||||||
|
"format": "{: %H:%M %p %h %d %Y}",
|
||||||
|
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
||||||
|
"on-click": "merkuro-calendar"
|
||||||
|
},
|
||||||
|
|
||||||
|
"tray": {
|
||||||
|
"icon-size": 15,
|
||||||
|
"spacing": 10
|
||||||
|
},
|
||||||
|
"custom/playerctl": {
|
||||||
|
"format": "{icon}",
|
||||||
|
"return-type": "json",
|
||||||
|
"max-length": 64,
|
||||||
|
"exec": "playerctl -a metadata --format '{\"text\": \"{{artist}} - {{markup_escape(title)}}\", \"tooltip\": \"{{playerName}} : {{markup_escape(title)}}\", \"alt\": \"{{status}}\", \"class\": \"{{status}}\"}' -F",
|
||||||
|
"on-click-middle": "playerctl play-pause",
|
||||||
|
"on-click": "playerctl previous",
|
||||||
|
"on-click-right": "playerctl next",
|
||||||
|
"format-icons": {
|
||||||
|
"Playing": "<span foreground='#E5B9C6'> </span>",
|
||||||
|
"Paused": "<span foreground='#928374'> </span>"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"cpu": {
|
||||||
|
"interval": 10,
|
||||||
|
"format": "{usage}% ",
|
||||||
|
"format-alt": "{avg_frequency} GHz ",
|
||||||
|
"on-double-click": "gnome-system-monitor"
|
||||||
|
},
|
||||||
|
"memory": {
|
||||||
|
"interval": 30,
|
||||||
|
"format": "{used:0.1f}G ",
|
||||||
|
"format-alt": "{used:0.1f}G/{total:0.1f}G ",
|
||||||
|
"tooltip-format": "{}%",
|
||||||
|
"on-double-click": "gnome-system-monitor"
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"interval": 10,
|
||||||
|
"format-wifi": "{essid} ",
|
||||||
|
"format-ethernet": "{bandwidthUpBytes}⇡ {bandwidthDownBytes}⇣{essid} ",
|
||||||
|
"format-linked": "{ifname} (No IP) ",
|
||||||
|
"format-disconnected": " Disconnected",
|
||||||
|
"tooltip-format-wifi": "Signal Strenght: {signalStrength}% | Down Speed: {bandwidthDownBits}, Up Speed: {bandwidthUpBits}",
|
||||||
|
},
|
||||||
|
"pulseaudio": {
|
||||||
|
"format": "{volume}% {icon} {format_source}",
|
||||||
|
"format-bluetooth": "{volume}%{icon} {format_source}",
|
||||||
|
"format-bluetooth-muted": " {icon} {format_source}",
|
||||||
|
"format-muted": "\udb81\udf5f {format_source}",
|
||||||
|
"format-source": "{volume}% ",
|
||||||
|
"format-source-muted": "",
|
||||||
|
"format-icons": {
|
||||||
|
"headphone": "",
|
||||||
|
"hands-free": "",
|
||||||
|
"headset": "",
|
||||||
|
"phone": "",
|
||||||
|
"portable": "",
|
||||||
|
"car": "",
|
||||||
|
"default": [
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
""
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"on-click-right": "pactl set-source-mute @DEFAULT_SOURCE@ toggle",
|
||||||
|
"on-click-middle": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
|
||||||
|
"on-double-click": "pavucontrol"
|
||||||
|
},
|
||||||
|
"custom/power": {
|
||||||
|
"format": "",
|
||||||
|
"on-click": "wlogout"
|
||||||
|
},
|
||||||
|
|
||||||
|
//Laptop
|
||||||
|
"backlight":{
|
||||||
|
"device": "intel_backlight",
|
||||||
|
"format": "{icon} {percent}%",
|
||||||
|
"format-icons": ["","",""],
|
||||||
|
"on-scroll-up": "brightnessctl set 1%+",
|
||||||
|
"on-scroll-down": "brightnessctl set 1%-",
|
||||||
|
"min-length": 6
|
||||||
|
},
|
||||||
|
"battery": {
|
||||||
|
"states": {
|
||||||
|
"good": 95,
|
||||||
|
"warning": 30,
|
||||||
|
"critical": 20
|
||||||
|
},
|
||||||
|
"format": "{icon} {capacity}%",
|
||||||
|
"format-charging": " {capacity}%",
|
||||||
|
"format-plugged": " {capacity}%",
|
||||||
|
"format-alt": "{time} {icon}",
|
||||||
|
"format-icons": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " "]
|
||||||
|
},
|
||||||
|
"custom/wl-gammarelay-temperature": {
|
||||||
|
"format": " {}",
|
||||||
|
"exec": "wl-gammarelay-rs watch {t}",
|
||||||
|
"on-scroll-up": "~/.config/hypr/scripts/brightness.sh temperature-up 100",
|
||||||
|
"on-scroll-down": "~/.config/hypr/scripts/brightness.sh temperature-down 100"
|
||||||
|
},
|
||||||
|
"custom/wl-gammarelay-brightness": {
|
||||||
|
"format": " {}",
|
||||||
|
"exec": "wl-gammarelay-rs watch {bp}",
|
||||||
|
"on-scroll-up": "~/.config/hypr/scripts/brightness.sh brightness-up 0.05",
|
||||||
|
"on-scroll-down": "~/.config/hypr/scripts/brightness.sh brightness-down 0.05"
|
||||||
|
}
|
||||||
|
}
|
||||||
45
.config/waybar/style.css
Executable file
@@ -0,0 +1,45 @@
|
|||||||
|
@import "colors.css";
|
||||||
|
|
||||||
|
* {
|
||||||
|
border: none;
|
||||||
|
border-radius: 5px;
|
||||||
|
font-family: monospace;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 14px;
|
||||||
|
min-height: 0px;
|
||||||
|
color: @text;
|
||||||
|
}
|
||||||
|
|
||||||
|
#waybar {
|
||||||
|
background: @surface0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock, #battery, #pulseaudio, #network, #tray, #cpu, #memory, #backlight, #workspaces, #window, #custom-playerctl, #custom-language, #custom-spotify, #custom-updates, #custom-caffeine, #custom-wl-gammarelay-brightness, #custom-wl-gammarelay-temperature, #custom-menu, #custom-power {
|
||||||
|
background: @surface1;
|
||||||
|
margin: 7px 0px 7px 5px;
|
||||||
|
padding: 0px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-power {
|
||||||
|
font-weight: normal;
|
||||||
|
font-size: 18px;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
padding: 2px;
|
||||||
|
margin: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.active {
|
||||||
|
background: @overlay0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button:hover {
|
||||||
|
background: @overlay2;
|
||||||
|
}
|
||||||
|
|
||||||
|
tooltip {
|
||||||
|
background: @surface0;
|
||||||
|
border: solid 2px @surface1;
|
||||||
|
}
|
||||||
BIN
.config/wlogout/imgs/lock-hover.png
Executable file
|
After Width: | Height: | Size: 5.6 KiB |
BIN
.config/wlogout/imgs/lock.png
Executable file
|
After Width: | Height: | Size: 5.6 KiB |
BIN
.config/wlogout/imgs/logout-hover.png
Executable file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
.config/wlogout/imgs/logout.png
Executable file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
.config/wlogout/imgs/power-hover.png
Executable file
|
After Width: | Height: | Size: 11 KiB |
BIN
.config/wlogout/imgs/power.png
Executable file
|
After Width: | Height: | Size: 10 KiB |
BIN
.config/wlogout/imgs/restart-hover.png
Executable file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
.config/wlogout/imgs/restart.png
Executable file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
.config/wlogout/imgs/sleep-hover.png
Executable file
|
After Width: | Height: | Size: 5.6 KiB |
BIN
.config/wlogout/imgs/sleep.png
Executable file
|
After Width: | Height: | Size: 5.6 KiB |
36
.config/wlogout/layout
Executable file
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"label" : "lock",
|
||||||
|
"action" : "~/.config/hypr/scripts/lock.sh",
|
||||||
|
"text" : "Lock",
|
||||||
|
"keybind" : "l"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"label" : "reboot",
|
||||||
|
"action" : "systemctl reboot",
|
||||||
|
"text" : "Reboot",
|
||||||
|
"keybind" : "r"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"label" : "shutdown",
|
||||||
|
"action" : "systemctl poweroff",
|
||||||
|
"text" : "Shutdown",
|
||||||
|
"keybind" : "s"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"label" : "logout",
|
||||||
|
"action" : "hyprctl dispatch exit 0",
|
||||||
|
"text" : "Logout",
|
||||||
|
"keybind" : "e"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"label" : "suspend",
|
||||||
|
"action" : "systemctl suspend",
|
||||||
|
"text" : "Suspend",
|
||||||
|
"keybind" : "u"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"label" : "suspend",
|
||||||
|
"action" : "systemctl hibernate",
|
||||||
|
"text" : "Hibernate",
|
||||||
|
"keybind" : "h"
|
||||||
|
}
|
||||||
61
.config/wlogout/style.css
Executable file
@@ -0,0 +1,61 @@
|
|||||||
|
window {
|
||||||
|
font-family: monospace;
|
||||||
|
font-size: 14pt;
|
||||||
|
color: #cdd6f4; /* text */
|
||||||
|
background-color: rgba(30, 30, 46, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center;
|
||||||
|
background-size: 25%;
|
||||||
|
border: none;
|
||||||
|
background-color: rgba(30, 30, 46, 0);
|
||||||
|
margin: 5px;
|
||||||
|
transition: box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
button:hover {
|
||||||
|
background-color: rgba(49, 50, 68, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
button:focus {
|
||||||
|
background-color: #cba6f7;
|
||||||
|
color: #1e1e2e;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#lock {
|
||||||
|
background-image: image(url("./imgs/lock.png"));
|
||||||
|
}
|
||||||
|
#lock:focus {
|
||||||
|
background-image: image(url("./imgs/lock-hover.png"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#logout {
|
||||||
|
background-image: image(url("./imgs/logout.png"));
|
||||||
|
}
|
||||||
|
#logout:focus {
|
||||||
|
background-image: image(url("./imgs/logout-hover.png"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#suspend {
|
||||||
|
background-image: image(url("./imgs/sleep.png"));
|
||||||
|
}
|
||||||
|
#suspend:focus {
|
||||||
|
background-image: image(url("./imgs/sleep-hover.png"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#shutdown {
|
||||||
|
background-image: image(url("./imgs/power.png"));
|
||||||
|
}
|
||||||
|
#shutdown:focus {
|
||||||
|
background-image: image(url("./imgs/power-hover.png"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#reboot {
|
||||||
|
background-image: image(url("./imgs/restart.png"));
|
||||||
|
}
|
||||||
|
#reboot:focus {
|
||||||
|
background-image: image(url("./imgs/restart-hover.png"));
|
||||||
|
}
|
||||||
6
README.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# My Dotfiles
|
||||||
|
- Simple install script
|
||||||
|
- Arch
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
...
|
||||||
13
applications.pkgs
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
libreoffice-fresh
|
||||||
|
brave-bin
|
||||||
|
discord
|
||||||
|
youtube-music
|
||||||
|
mpv
|
||||||
|
waypaper-git
|
||||||
|
galculator
|
||||||
|
pavucontrol
|
||||||
|
vscodium
|
||||||
|
#thunar
|
||||||
|
#dolphin
|
||||||
|
#qt5-imageformats
|
||||||
|
#ark
|
||||||
79
default.pkgs
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
# Core
|
||||||
|
hyprland
|
||||||
|
sddm
|
||||||
|
hyprshade
|
||||||
|
swaync
|
||||||
|
rofi-lbonn-wayland
|
||||||
|
rofi-calc
|
||||||
|
rofimoji
|
||||||
|
eww-tray-wayland-git
|
||||||
|
swww
|
||||||
|
swaylock-effects
|
||||||
|
swayidle
|
||||||
|
wlogout
|
||||||
|
grimblast-git
|
||||||
|
cliphist
|
||||||
|
wl-clipboard
|
||||||
|
polkit-kde-agent
|
||||||
|
xdg-desktop-portal-hyprland
|
||||||
|
|
||||||
|
# Pipewire
|
||||||
|
pipewire
|
||||||
|
wireplumber
|
||||||
|
pipewire-alsa
|
||||||
|
pipewire-audio
|
||||||
|
pipewire-jack
|
||||||
|
pipewire-pulse
|
||||||
|
gst-plugin-pipewire
|
||||||
|
|
||||||
|
# Network
|
||||||
|
networkmanager
|
||||||
|
networkmanager-openvpn
|
||||||
|
network-manager-applet
|
||||||
|
|
||||||
|
# Bluetooth
|
||||||
|
bluez
|
||||||
|
bluez-utils
|
||||||
|
blueman
|
||||||
|
|
||||||
|
# Printing
|
||||||
|
cups
|
||||||
|
cups-pdf
|
||||||
|
|
||||||
|
# CLI Tools
|
||||||
|
inotify-tools
|
||||||
|
brightnessctl
|
||||||
|
playerctl
|
||||||
|
upower
|
||||||
|
socat
|
||||||
|
unzip
|
||||||
|
less
|
||||||
|
curl
|
||||||
|
wget
|
||||||
|
awk
|
||||||
|
zip
|
||||||
|
tar
|
||||||
|
jq
|
||||||
|
|
||||||
|
# CLI nice too have
|
||||||
|
#wlr-randr
|
||||||
|
libnotify
|
||||||
|
mediainfo
|
||||||
|
exa
|
||||||
|
bat
|
||||||
|
|
||||||
|
# Programming languages
|
||||||
|
jdk-openjdk
|
||||||
|
rustup
|
||||||
|
npm
|
||||||
|
|
||||||
|
# Terminal
|
||||||
|
kitty
|
||||||
|
fish
|
||||||
|
fish-done
|
||||||
|
imagemagick
|
||||||
|
fastfetch
|
||||||
|
starship
|
||||||
|
neovim
|
||||||
|
ranger
|
||||||
|
bashtop
|
||||||
139
etc/sddm.conf.d/default.conf
Executable 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=
|
||||||
|
|
||||||
|
# Cursor theme used in the greeter
|
||||||
|
CursorTheme=
|
||||||
|
|
||||||
|
# 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=
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
|
||||||
58
games.pkgs
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
steam
|
||||||
|
lutris
|
||||||
|
|
||||||
|
# Dependecies AMD
|
||||||
|
lib32-mesa
|
||||||
|
vulkan-radeon
|
||||||
|
lib32-vulkan-radeon
|
||||||
|
vulkan-icd-loader
|
||||||
|
lib32-vulkan-icd-loader
|
||||||
|
|
||||||
|
# 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
|
||||||
60
home/.bashrc
Executable file
@@ -0,0 +1,60 @@
|
|||||||
|
# If not running interactively, don't do anything
|
||||||
|
[[ $- != *i* ]] && return
|
||||||
|
|
||||||
|
# Load starship prompt if starship is installed
|
||||||
|
if [ -x /usr/bin/starship ]; then
|
||||||
|
__main() {
|
||||||
|
local major="${BASH_VERSINFO[0]}"
|
||||||
|
local minor="${BASH_VERSINFO[1]}"
|
||||||
|
|
||||||
|
if ((major > 4)) || { ((major == 4)) && ((minor >= 1)); }; then
|
||||||
|
source <("/usr/bin/starship" init bash --print-full-init)
|
||||||
|
else
|
||||||
|
source /dev/stdin <<<"$("/usr/bin/starship" init bash --print-full-init)"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
__main
|
||||||
|
unset -f __main
|
||||||
|
fi
|
||||||
|
|
||||||
|
## Aliases
|
||||||
|
# Replace ls with exa
|
||||||
|
alias ls='exa -al --color=always --group-directories-first' # preferred listing
|
||||||
|
alias la='exa -a --color=always --group-directories-first' # all files and dirs
|
||||||
|
alias ll='exa -l --color=always --group-directories-first' # long format
|
||||||
|
alias lt='exa -aT --color=always --group-directories-first' # tree listing
|
||||||
|
alias l.='exa -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"
|
||||||
172
install.sh
Executable file
@@ -0,0 +1,172 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Helpers
|
||||||
|
get_aur_helper() {
|
||||||
|
if is_installed paru; then
|
||||||
|
echo "paru"
|
||||||
|
elif is_installed yay; then
|
||||||
|
echo "yay"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
is_installed() {
|
||||||
|
if pacman -Qi $1 &> /dev/null; then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
is_pkg() {
|
||||||
|
if "$1" -Si "$2" &>/dev/null; then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
is_aur_pkg() {
|
||||||
|
helper=$(get_aur_helper)
|
||||||
|
if [ -z $helper ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
return $(is_pkg $helper $1)
|
||||||
|
}
|
||||||
|
|
||||||
|
is_arch_pkg() {
|
||||||
|
return $(is_pkg pacman $1)
|
||||||
|
}
|
||||||
|
|
||||||
|
install() {
|
||||||
|
if is_installed "$1"; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if is_arch_pkg "$1"; then
|
||||||
|
sudo pacman -S $1
|
||||||
|
elif is_aur_pkg "$1"; then
|
||||||
|
sudo $(get_aur_helper) -S $1
|
||||||
|
else
|
||||||
|
echo "error: unknown package [$1]"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Banner
|
||||||
|
cat << "EOF"
|
||||||
|
________ __ .___ __ .__ .__
|
||||||
|
\______ \ _____/ |_ ______ | | ____ _______/ |______ | | | | ___________
|
||||||
|
| | \ / _ \ __\/ ___/ | |/ \ / ___/\ __\__ \ | | | | _/ __ \_ __ \
|
||||||
|
| ` ( <_> ) | \___ \ | | | \\___ \ | | / __ \| |_| |_\ ___/| | \/
|
||||||
|
/_______ /\____/|__| /____ > |___|___| /____ > |__| (____ /____/____/\___ >__|
|
||||||
|
\/ \/ \/ \/ \/ \/
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Vars
|
||||||
|
script_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd)"
|
||||||
|
clone_dir="$HOME/git/"
|
||||||
|
|
||||||
|
# Change working directory
|
||||||
|
cd $script_dir
|
||||||
|
echo "Working directory: $(pwd)"
|
||||||
|
|
||||||
|
# Dependencies
|
||||||
|
echo ""
|
||||||
|
echo "Installing dependencies..."
|
||||||
|
install git
|
||||||
|
install base-devel
|
||||||
|
echo "Dependencies installed!"
|
||||||
|
|
||||||
|
# AUR helper
|
||||||
|
if ! (is_installed paru || is_installed yay); then
|
||||||
|
echo ""
|
||||||
|
echo "Installing AUR helper..."
|
||||||
|
echo -e "AUR helper:\n1) paru\n2) yay"
|
||||||
|
read -p "Enter your preference (default=1): " helper
|
||||||
|
|
||||||
|
case $helper in
|
||||||
|
1) helper="paru" ;;
|
||||||
|
2) helper="yay" ;;
|
||||||
|
*) helper="paru" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -d $clone_dir ]; then
|
||||||
|
rm -rf $clone_dir$helper
|
||||||
|
else
|
||||||
|
mkdir $clone_dir
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Installing $helper..."
|
||||||
|
cd $clone_dir
|
||||||
|
git clone https://aur.archlinux.org/$helper.git
|
||||||
|
cd $helper
|
||||||
|
makepkg -si
|
||||||
|
cd $script_dir
|
||||||
|
echo "AUR helper installed!"
|
||||||
|
else
|
||||||
|
helper=$(get_aur_helper)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Install packages
|
||||||
|
echo ""
|
||||||
|
echo "Installing packages..."
|
||||||
|
|
||||||
|
for pkg_file in *.pkgs; do
|
||||||
|
[ -f "$pkg_file" ] || continue
|
||||||
|
echo "Found package file: $pkg_file"
|
||||||
|
read -p "Do you want to install the packages from this file(Y/n)?" inst
|
||||||
|
|
||||||
|
if [ "$inst" == "n" ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
while IFS= read -r pkg; do
|
||||||
|
if [[ $pkg = \#* ]] || [ -z "$pkg" ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
if is_installed $pkg; then
|
||||||
|
echo "info: package already installed, ignoring [$pkg]"
|
||||||
|
elif is_arch_pkg $pkg; then
|
||||||
|
arch_pkgs="${arch_pkgs} $pkg"
|
||||||
|
elif is_aur_pkg $pkg; then
|
||||||
|
aur_pkgs="${aur_pkgs} $pkg"
|
||||||
|
else
|
||||||
|
echo "error: unknown package [$pkg]"
|
||||||
|
fi
|
||||||
|
done < $pkg_file
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Installing arch packages..."
|
||||||
|
if [ ! -z "$arch_pkgs" ]; then
|
||||||
|
sudo pacman -Sy $arch_pkgs
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Installing AUR packages..."
|
||||||
|
if [ ! -z "$aur_pkgs" ]; then
|
||||||
|
$helper -Sy $aur_pkgs
|
||||||
|
fi
|
||||||
|
|
||||||
|
# TODO mic-indicator, nerd font
|
||||||
|
echo "Packages installed!"
|
||||||
|
|
||||||
|
# Apply default configs
|
||||||
|
if [ "$1" != "nc" ]; then
|
||||||
|
echo ""
|
||||||
|
echo "Copying configs..."
|
||||||
|
cp -r -f .config/. ~/.config/
|
||||||
|
cp -r -f home/. ~/
|
||||||
|
sudo cp -r -f etc/. /etc/
|
||||||
|
echo "Configs copied!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
#TODO Set theme
|
||||||
|
|
||||||
|
#TODO Enable services
|
||||||
|
# cups (is_isnstalled $pkg -> ask? -> enable)
|
||||||
|
# bluetooth
|
||||||
|
# sddm
|
||||||
|
|
||||||
|
echo "Finished!"
|
||||||
1
programming.pkgs
Normal file
@@ -0,0 +1 @@
|
|||||||
|
maven
|
||||||
27
theming.pkgs
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# Theming
|
||||||
|
nwg-look
|
||||||
|
kvantum
|
||||||
|
qt5ct
|
||||||
|
|
||||||
|
# Fonts
|
||||||
|
noto-fonts
|
||||||
|
noto-fonts-cjk
|
||||||
|
noto-fonts-emoji
|
||||||
|
ttf-font-awesome
|
||||||
|
ttf-firacode-nerd
|
||||||
|
#nerd-fonts
|
||||||
|
|
||||||
|
# Icon Themes
|
||||||
|
papirus-icon-theme
|
||||||
|
xcursor-breeze
|
||||||
|
|
||||||
|
# Themes
|
||||||
|
catppuccin-gtk-theme-frappe
|
||||||
|
catppuccin-gtk-theme-latte
|
||||||
|
catppuccin-gtk-theme-macchiato
|
||||||
|
catppuccin-gtk-theme-mocha
|
||||||
|
|
||||||
|
# Dependencies
|
||||||
|
qt5-graphicaleffects
|
||||||
|
qt5-quickcontrols2
|
||||||
|
qt5-svg
|
||||||