reimplement config dotfiles with templates

This commit is contained in:
SALVI Jérémie
2024-08-15 17:56:06 +02:00
parent 9ae4fdb609
commit d02841fd19
49 changed files with 2451 additions and 219 deletions

View File

@@ -8,6 +8,29 @@ Arch will be installed on the same disk with btrfs suvolumes for partitions
## Post installation ## Post installation
https://aur.archlinux.org/packages/paru
This scripts works with paru.
This scripts need to be launched as root This scripts need to be launched as root
## Arch installation
- Change DISK variable to the install.sh script with your favourite editor.
- Launch script
## For testing purpose (kvm only)
You can share filesystem from host to guest (https://wiki.archlinux.org/title/Libvirt#Sharing_data_between_host_and_guest) :
Share scripts :
```
mount -t 9p scripts /opt
```
Share pacman cache :
```
mount -t 9p pkgs /var/cache/pacman/pkg
```
## Arch configuration
git with output to /usr/local/hsare/dotfiles

1
TODO
View File

@@ -5,3 +5,4 @@ dmenu
picom picom
dunst dunst
polybar polybar
color to kernel cmdline

View File

@@ -1,8 +0,0 @@
Section "InputClass"
Identifier "system-keyboard"
MatchIsKeyboard "on"
Option "XkbLayout" "us_qwerty-fr"
Option "XkbModel" "pc105"
Option "XkbVariant" "qwerty-fr"
Option "XkbOptions" ""
EndSection

View File

@@ -1,13 +0,0 @@
#!/bin/bash
#Switch to the script directory
_BASENAME=$(basename "$0")
cd "$(dirname "$0")" || _exit 1
cp xinitrc /etc/X11/xinit/xinitrc
cp .Xresources /etc/X11/xinit/.Xresources
cp 00-keyboard.conf /etc/X11/xorg.conf.d/00-keyboard.conf
wget https://raw.githubusercontent.com/qwerty-fr/qwerty-fr/master/linux/us_qwerty-fr -O /tmp/us_qwerty-fr
cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/us_qwerty-fr
cat /tmp/us_qwerty-fr >> /usr/share/X11/xkb/symbols/us_qwerty-fr

View File

@@ -1,22 +0,0 @@
# Arch install script
## How to
- Change DISK variable to the install.sh script with your favourite editor.
- Launch script
## For testing purpose (kvm only)
You can share filesystem from host to guest (https://wiki.archlinux.org/title/Libvirt#Sharing_data_between_host_and_guest) :
Share scripts :
```
mount -t 9p scripts /opt
```
Share pacman cache :
```
mount -t 9p pkg /var/cache/pacman/pkg
```

View File

@@ -2,21 +2,65 @@
set -e set -e
#Switch to the script directory ### Switch to the script directory
_BASENAME=$(basename "$0") _BASENAME=$(basename "$0")
_DIRNAME=$(dirname "$0")
cd "$(dirname "$0")" || _exit 1 cd "$(dirname "$0")" || _exit 1
source functions.sh
scripts/installyay.sh ### install packages
sed -i "s|^#Color.*|Color|" /etc/pacman.conf sed -i "s|^#Color.*|Color|" /etc/pacman.conf
sed -i "s|^#ParallelDownloads.*|ParallelDownloads = 10|" /etc/pacman.conf sed -i "s|^#ParallelDownloads.*|ParallelDownloads = 10|" /etc/pacman.conf
yay #pacman -Syu --noconfirm
yay -S --noconfirm - < packages #pacman -S --noconfirm - < packages
tty/deploy.sh ### Configure tty
network/deploy.sh mkdir -p /etc/systemd/system/getty@tty1.service.d
X11/deploy.sh ln -sf "${_DIRNAME}/links/tty/autologin.conf" /etc/systemd/system/getty@tty1.service.d/override.conf
i3wm/deploy.sh ln -sf "${_DIRNAME}/links/tty/bash.bashrc" /etc/bash.bashrc
ln -sf "${_DIRNAME}/links/tty/bash.bashaliases" /etc/bash.bashaliases
ln -sf "${_DIRNAME}/links/tty/bash.bashexports" /etc/bash.bashexports
ln -sf "${_DIRNAME}/links/tty/inputrc" /etc/inputrc
ln -sf "${_DIRNAME}/links/tty/issue" /etc/issue
cp -r wallpapers /usr/local/share ### Configure X11
cp ./templates/X11/.Xresources ./links/X11/.Xresources
_template "./links/X11/.Xresources"
ln -sf "${_DIRNAME}/links/X11/.Xresources" /etc/X11/xinit/.Xresources
ln -sf "${_DIRNAME}/links/X11/xinitrc" /etc/X11/xinit/xinitrc
ln -sf "${_DIRNAME}/links/X11/00-keyboard.conf" /etc/X11/xorg.conf.d/00-keyboard.conf
cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/us_qwerty-fr
curl https://raw.githubusercontent.com/qwerty-fr/qwerty-fr/master/linux/us_qwerty-fr >> /usr/share/X11/xkb/symbols/us_qwerty-fr
xrdb /etc/X11/xinit/.Xresources
### Configure i3
mkdir -p ~/.config/i3
ln -sf "${_DIRNAME}/links/i3wm/config" ~/.config/i3/config
### Configure rofi
cp ./templates/rofi/colors.rasi ./links/rofi/colors.rasi
_template "./links/rofi/colors.rasi"
mkdir -p ~/.config/rofi
mkdir -p ~/.local/share/rofi/themes
ln -sf "${_DIRNAME}/links/rofi/config.rasi" ~/.config/rofi/config.rasi
ln -sf "${_DIRNAME}/links/rofi/colors.rasi" ~/.local/share/rofi/themes/colors.rasi
ln -sf "${_DIRNAME}/links/rofi/disconnect.rasi" ~/.local/share/rofi/themes/disconnect.rasi
ln -sf "${_DIRNAME}/links/rofi/launcher.rasi" ~/.local/share/rofi/themes/launcher.rasi
### Configure polybar
cp ./templates/polybar/config.ini ./links/polybar/config.ini
_template "./links/polybar/config.ini"
ln -sf "${_DIRNAME}/links/polybar/config.ini" /etc/polybar/config.ini
### Configure dunst
cp ./templates/dunst/dunstrc ./links/dunst/dunstrc
_template "./links/dunst/dunstrc"
ln -sf "${_DIRNAME}/links/dunst/dunstrc" /etc/dunst/dunstrc
### Configure picom
ln -sf "${_DIRNAME}/links/picom/picom.conf" /etc/xdg/picom.conf
### Applications
mkdir -p ~/.local/share/applications
ln -sf "${_DIRNAME}/links/applications/code.desktop" ~/.local/share/applications/code.desktop

28
functions.sh Normal file
View File

@@ -0,0 +1,28 @@
function _template {
source ./templates/variables
sed -i "s|{{foreground}}|$foreground|" "$1"
sed -i "s|{{foreground_light}}|$foreground_light|" "$1"
sed -i "s|{{foreground_lighter}}|$foreground_lighter|" "$1"
sed -i "s|{{background}}|$background|" "$1"
sed -i "s|{{background_light}}|$background_light|" "$1"
sed -i "s|{{background_dark}}|$background_dark|" "$1"
sed -i "s|{{background_darker}}|$background_darker|" "$1"
sed -i "s|{{cursor_color}}|$cursor_color|" "$1"
sed -i "s|{{color0}}|$color0|" "$1"
sed -i "s|{{color8}}|$color8|" "$1"
sed -i "s|{{color1}}|$color1|" "$1"
sed -i "s|{{color9}}|$color9|" "$1"
sed -i "s|{{color2}}|$color2|" "$1"
sed -i "s|{{color10}}|$color10|" "$1"
sed -i "s|{{color3}}|$color3|" "$1"
sed -i "s|{{color11}}|$color11|" "$1"
sed -i "s|{{color4}}|$color4|" "$1"
sed -i "s|{{color12}}|$color12|" "$1"
sed -i "s|{{color5}}|$color5|" "$1"
sed -i "s|{{color13}}|$color13|" "$1"
sed -i "s|{{color6}}|$color6|" "$1"
sed -i "s|{{color14}}|$color14|" "$1"
sed -i "s|{{color7}}|$color7|" "$1"
sed -i "s|{{color15}}|$color15|" "$1"
}

View File

@@ -1,9 +0,0 @@
#!/bin/bash
#Switch to the script directory
_BASENAME=$(basename "$0")
cd "$(dirname "$0")" || _exit 1
cp config /etc/i3/config
cp i3wm_key_help.sh /etc/i3/i3wm_key_help.sh
cp wallpapers.sh /etc/i3/wallpapers.sh

View File

@@ -1,15 +0,0 @@
#!/bin/bash
_LINES=$(ps -eo pid,cmd | grep wallpaper | \
grep -v grep | grep -v $$ | awk '{print $1}' | tr '\n' ' ')
for i in $_LINES
do
kill $i
done
while (( $(pgrep i3) ))
do
feh --randomize --bg-max /usr/local/share/wallpapers
sleep 10
done

View File

@@ -1,11 +1,14 @@
#!/bin/bash #!/bin/bash
DISK="/dev/sdc"
MOUNTOPTS="defaults,ssd,compress=zstd,autodefrag,noatime"
PASSWORD="root"
set -e set -e
DISK="/dev/vda"
MOUNTOPTS="defaults,ssd,compress=zstd,autodefrag,noatime"
PACSTRAP_EXTRA_ARGS="-c"
#Switch to the script directory
cd "$(dirname "$0")"
DIRNAME="$(pwd)"
# Format disk # Format disk
sgdisk --clear \ sgdisk --clear \
--new=1:0:+1024MiB --typecode=1:ef00 --change-name=1:EFI \ --new=1:0:+1024MiB --typecode=1:ef00 --change-name=1:EFI \
@@ -14,8 +17,8 @@ sgdisk --clear \
partprobe "$DISK" partprobe "$DISK"
#Create Luks partition #Create Luks partition
printf "%s\n" "$PASSWORD" | cryptsetup --batch-mode --verify-passphrase luksFormat /dev/disk/by-partlabel/SYS printf "%s\n" "root" | cryptsetup --batch-mode --verify-passphrase luksFormat /dev/disk/by-partlabel/SYS
printf "%s\n" "$PASSWORD" | cryptsetup open /dev/disk/by-partlabel/SYS rootfs printf "%s\n" "root" | cryptsetup open /dev/disk/by-partlabel/SYS rootfs
#Create filesystem #Create filesystem
mkfs.fat -F32 -n efi /dev/disk/by-partlabel/EFI mkfs.fat -F32 -n efi /dev/disk/by-partlabel/EFI
@@ -25,22 +28,20 @@ mkfs.btrfs -f --label root /dev/mapper/rootfs
mount -o $MOUNTOPTS /dev/mapper/rootfs /mnt mount -o $MOUNTOPTS /dev/mapper/rootfs /mnt
cd /mnt cd /mnt
btrfs subvolume create @ btrfs subvolume create @
btrfs subvolume create @readonly
btrfs subvolume create @root btrfs subvolume create @root
btrfs subvolume create @home btrfs subvolume create @home
btrfs subvolume create @var btrfs subvolume create @var
cd cd "$DIRNAME"
umount /mnt umount /mnt
#Mount volumes #Mount volumes
mount --mkdir -o $MOUNTOPTS,subvol=@ /dev/mapper/rootfs /mnt mount --mkdir -o $MOUNTOPTS,subvol=@ /dev/mapper/rootfs /mnt
mount --mkdir -o $MOUNTOPTS,subvol=@readonly /dev/mapper/rootfs /mnt/readonly
mount --mkdir -o $MOUNTOPTS,subvol=@root /dev/mapper/rootfs /mnt/root mount --mkdir -o $MOUNTOPTS,subvol=@root /dev/mapper/rootfs /mnt/root
mount --mkdir -o $MOUNTOPTS,subvol=@home /dev/mapper/rootfs /mnt/home mount --mkdir -o $MOUNTOPTS,subvol=@home /dev/mapper/rootfs /mnt/home
mount --mkdir -o $MOUNTOPTS,subvol=@var /dev/mapper/rootfs /mnt/var mount --mkdir -o $MOUNTOPTS,subvol=@var /dev/mapper/rootfs /mnt/var
mount --mkdir /dev/disk/by-partlabel/EFI /mnt/boot mount --mkdir /dev/disk/by-partlabel/EFI /mnt/boot
#Init pacman keys #Init pacman
pacman-key --init pacman-key --init
pacman-key --populate pacman-key --populate
pacman -Sy pacman -Sy
@@ -48,8 +49,8 @@ pacman -Sy
sed -i "s|^#Color.*|Color|" /etc/pacman.conf sed -i "s|^#Color.*|Color|" /etc/pacman.conf
sed -i "s|^#ParallelDownloads.*|ParallelDownloads = 10|" /etc/pacman.conf sed -i "s|^#ParallelDownloads.*|ParallelDownloads = 10|" /etc/pacman.conf
##Install base #Install base
pacstrap -c -K /mnt \ pacstrap "$PACSTRAP_EXTRA_ARGS" -K /mnt \
base \ base \
base-devel \ base-devel \
linux \ linux \
@@ -65,11 +66,7 @@ pacstrap -c -K /mnt \
#Generate fstab #Generate fstab
genfstab -U /mnt | sed "s/subvolid=[0-9]\{3\},//" > /mnt/etc/fstab genfstab -U /mnt | sed "s/subvolid=[0-9]\{3\},//" > /mnt/etc/fstab
#Configure installation #Configure boot environnement
cd /mnt/bin
ln -s nvim vi
cd
sed -i "/^HOOKS/s|block|block encrypt btrfs|" /mnt/etc/mkinitcpio.conf sed -i "/^HOOKS/s|block|block encrypt btrfs|" /mnt/etc/mkinitcpio.conf
sed -i "s|^BINARIES.*|BINARIES=\(btrfs\)|" /mnt/etc/mkinitcpio.conf sed -i "s|^BINARIES.*|BINARIES=\(btrfs\)|" /mnt/etc/mkinitcpio.conf
@@ -83,24 +80,35 @@ sed -i "s|^#default_options|default_options|" /mnt/etc/mkinitcpio.d/linux.preset
arch-chroot /mnt mkinitcpio -P arch-chroot /mnt mkinitcpio -P
efibootmgr --create --disk /dev/vda --part 1 --label "Arch Linux" --loader 'arch-linux.efi' efibootmgr --create --disk $DISK --part 1 --label "Arch Linux" --loader 'arch-linux.efi'
#Configure installation
##Configure vi
cd /mnt/bin
ln -s nvim vi
cd "$DIRNAME"
##Configure login
sed -i 's|^root:.*|root:$y$j9T$BPO20nCgFZ8NuDn6LZ6KU0$681FWXbptNoLEbIKmyRtivt1NCpfPugq0hgtI8lsjCC:19916::::::|' /mnt/etc/shadow sed -i 's|^root:.*|root:$y$j9T$BPO20nCgFZ8NuDn6LZ6KU0$681FWXbptNoLEbIKmyRtivt1NCpfPugq0hgtI8lsjCC:19916::::::|' /mnt/etc/shadow
sed -i "s|^#PermitRootLogin.*|PermitRootLogin yes|" /mnt/etc/ssh/sshd_config printf "PermitRootLogin yes" > /mnt/etc/ssh/sshd_config.d/99-permitrootlogin.conf
cat << EOF > /mnt/etc/systemd/network/00-wired.network
[Match]
Name=*
[Network]
DHCP=yes
EOF
##Configure network
cp network/00-wired.network /mnt/etc/systemd/network/0-wired.network
cp network/resolved.conf /mnt/etc/systemd/resolved.conf
cd /mnt/etc cd /mnt/etc
ln -sf ../run/systemd/resolve/stub-resolv.conf resolv.conf ln -sf ../run/systemd/resolve/stub-resolv.conf resolv.conf
cd cd "$DIRNAME"
##Configure tty
mkdir -p /mnt/etc/systemd/system/getty@tty1.service.d/
cp tty/autologin.conf /mnt/etc/systemd/system/getty@tty1.service.d/override.conf
cp tty/bash.bashexports /mnt/etc/bash.bashexports
cp tty/bash.bashaliases /mnt/etc/bash.bashaliases
cp tty/bash.bashrc /mnt/etc/bash.bashrc
cp tty/inputrc /mnt/etc/inputrc
cp tty/issue /mnt/etc/issue
##Restart services
arch-chroot /mnt systemctl enable sshd.service systemd-networkd.service systemd-timesyncd.service systemd-resolved.service arch-chroot /mnt systemctl enable sshd.service systemd-networkd.service systemd-timesyncd.service systemd-resolved.service
#umount -R /mnt echo "DONE !!!"
#cryptsetup close rootfs

View File

@@ -62,5 +62,5 @@ URxvt.keysym.A-slash: resize-font:show
!Configure Url Launcher !Configure Url Launcher
URxvt.url-launcher: firefox URxvt.url-launcher: firefox
URxvt.matcher.button: C-1 URxvt.matcher.button: 1
URxvt.keysym.A-u: perl:matcher:select URxvt.keysym.A-u: perl:matcher:select

View File

@@ -0,0 +1,8 @@
Section "InputClass"
Identifier "system-keyboard"
MatchIsKeyboard "on"
Option "XkbLayout" "us_qwerty-fr"
Option "XkbModel" "pc105"
Option "XkbVariant" "qwerty-fr"
Option "XkbOptions" ""
EndSection

View File

@@ -6,6 +6,7 @@ sysresources=/etc/X11/xinit/.Xresources
sysmodmap=/etc/X11/xinit/.Xmodmap sysmodmap=/etc/X11/xinit/.Xmodmap
# merge in defaults and keymaps # merge in defaults and keymaps
if [ -f $sysresources ]; then if [ -f $sysresources ]; then
xrdb -merge $sysresources xrdb -merge $sysresources
fi fi

View File

@@ -0,0 +1,28 @@
[Desktop Entry]
Name=Code - Open Source Version
Comment=Code Editing. Redefined.
GenericName=Text Editor
Exec=code --no-sandbox
Icon=vscode
Type=Application
StartupNotify=false
StartupWMClass=code-oss
Categories=TextEditor;Development;IDE;
MimeType=application/x-code-oss-workspace;
Actions=new-empty-window;
Keywords=vscode;
X-Desktop-File-Install-Version=0.27
[Desktop Action new-empty-window]
Name=New Empty Window
Name[de]=Neues leeres Fenster
Name[es]=Nueva ventana vacía
Name[fr]=Nouvelle fenêtre vide
Name[it]=Nuova finestra vuota
Name[ja]=新しい空のウィンドウ
Name[ko]=새 빈 창
Name[ru]=Новое пустое окно
Name[zh_CN]=新建空窗口
Name[zh_TW]=開新空視窗
Exec=code --no-sandbox
Icon=vscode

459
links/dunst/dunstrc Normal file
View File

@@ -0,0 +1,459 @@
# See dunst(5) for all configuration options
[global]
### Display ###
# Which monitor should the notifications be displayed on.
monitor = 0
# Display notification on focused monitor. Possible modes are:
# mouse: follow mouse pointer
# keyboard: follow window with keyboard focus
# none: don't follow anything
#
# "keyboard" needs a window manager that exports the
# _NET_ACTIVE_WINDOW property.
# This should be the case for almost all modern window managers.
#
# If this option is set to mouse or keyboard, the monitor option
# will be ignored.
follow = none
### Geometry ###
# dynamic width from 0 to 300
# width = (0, 300)
# constant width of 300
width = (0,300)
# The maximum height of a single notification, excluding the frame.
height = 300
# Position the notification in the top right corner
origin = top-right
# Offset from the origin
offset = 20x50
# Scale factor. It is auto-detected if value is 0.
scale = 0
# Maximum number of notification (0 means no limit)
notification_limit = 20
### Progress bar ###
# Turn on the progess bar. It appears when a progress hint is passed with
# for example dunstify -h int:value:12
progress_bar = true
# Set the progress bar height. This includes the frame, so make sure
# it's at least twice as big as the frame width.
progress_bar_height = 10
# Set the frame width of the progress bar
progress_bar_frame_width = 1
# Set the minimum width for the progress bar
progress_bar_min_width = 150
# Set the maximum width for the progress bar
progress_bar_max_width = 300
# Corner radius for the progress bar. 0 disables rounded corners.
progress_bar_corner_radius = 0
# Corner radius for the icon image.
icon_corner_radius = 0
# Show how many messages are currently hidden (because of
# notification_limit).
indicate_hidden = yes
# The transparency of the window. Range: [0; 100].
# This option will only work if a compositing window manager is
# present (e.g. xcompmgr, compiz, etc.). (X11 only)
transparency = 25
# Draw a line of "separator_height" pixel height between two
# notifications.
# Set to 0 to disable.
# If gap_size is greater than 0, this setting will be ignored.
separator_height = 2
# Padding between text and separator.
padding = 8
# Horizontal padding.
horizontal_padding = 8
# Padding between text and icon.
text_icon_padding = 0
# Defines width in pixels of frame around the notification window.
# Set to 0 to disable.
frame_width = 1
# Defines color of the frame around the notification window.
frame_color = "#8caaee"
# Size of gap to display between notifications - requires a compositor.
# If value is greater than 0, separator_height will be ignored and a border
# of size frame_width will be drawn around each notification instead.
# Click events on gaps do not currently propagate to applications below.
gap_size = 5
# Define a color for the separator.
# possible values are:
# * auto: dunst tries to find a color fitting to the background;
# * foreground: use the same color as the foreground;
# * frame: use the same color as the frame;
# * anything else will be interpreted as a X color.
separator_color = frame
# Sort messages by urgency.
sort = yes
# Don't remove messages, if the user is idle (no mouse or keyboard input)
# for longer than idle_threshold seconds.
# Set to 0 to disable.
# A client can set the 'transient' hint to bypass this. See the rules
# section for how to disable this if necessary
# idle_threshold = 120
### Text ###
font = ComicShannsMono Nerd Font 12
# The spacing between lines. If the height is smaller than the
# font height, it will get raised to the font height.
line_height = 0
# Possible values are:
# full: Allow a small subset of html markup in notifications:
# <b>bold</b>
# <i>italic</i>
# <s>strikethrough</s>
# <u>underline</u>
#
# For a complete reference see
# <https://docs.gtk.org/Pango/pango_markup.html>.
#
# strip: This setting is provided for compatibility with some broken
# clients that send markup even though it's not enabled on the
# server. Dunst will try to strip the markup but the parsing is
# simplistic so using this option outside of matching rules for
# specific applications *IS GREATLY DISCOURAGED*.
#
# no: Disable markup parsing, incoming notifications will be treated as
# plain text. Dunst will not advertise that it has the body-markup
# capability if this is set as a global setting.
#
# It's important to note that markup inside the format option will be parsed
# regardless of what this is set to.
markup = full
# The format of the message. Possible variables are:
# %a appname
# %s summary
# %b body
# %i iconname (including its path)
# %I iconname (without its path)
# %p progress value if set ([ 0%] to [100%]) or nothing
# %n progress value if set without any extra characters
# %% Literal %
# Markup is allowed
format = "<b>%s</b>\n%b"
# Alignment of message text.
# Possible values are "left", "center" and "right".
alignment = left
# Vertical alignment of message text and icon.
# Possible values are "top", "center" and "bottom".
vertical_alignment = center
# Show age of message if message is older than show_age_threshold
# seconds.
# Set to -1 to disable.
show_age_threshold = 60
# Specify where to make an ellipsis in long lines.
# Possible values are "start", "middle" and "end".
ellipsize = middle
# Ignore newlines '\n' in notifications.
ignore_newline = no
# Stack together notifications with the same content
stack_duplicates = true
# Hide the count of stacked notifications with the same content
hide_duplicate_count = false
# Display indicators for URLs (U) and actions (A).
show_indicators = yes
### Icons ###
# Recursive icon lookup. You can set a single theme, instead of having to
# define all lookup paths.
enable_recursive_icon_lookup = true
# Set icon theme (only used for recursive icon lookup)
icon_theme = oxygen
# You can also set multiple icon themes, with the leftmost one being used first.
# icon_theme = "Adwaita, breeze"
# Align icons left/right/top/off
icon_position = left
# Scale small icons up to this size, set to 0 to disable. Helpful
# for e.g. small files or high-dpi screens. In case of conflict,
# max_icon_size takes precedence over this.
min_icon_size = 32
# Scale larger icons down to this size, set to 0 to disable
max_icon_size = 64
# Paths to default icons (only neccesary when not using recursive icon lookup)
icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
### History ###
# Should a notification popped up from history be sticky or timeout
# as if it would normally do.
sticky_history = yes
# Maximum amount of notifications kept in history
history_length = 20
### Misc/Advanced ###
# dmenu path.
dmenu = /usr/bin/dmenu -p dunst:
# Browser for opening urls in context menu.
browser = /usr/bin/xdg-open
# Always run rule-defined scripts, even if the notification is suppressed
always_run_script = true
# Define the title of the windows spawned by dunst
title = Dunst
# Define the class of the windows spawned by dunst
class = Dunst
# Define the corner radius of the notification window
# in pixel size. If the radius is 0, you have no rounded
# corners.
# The radius will be automatically lowered if it exceeds half of the
# notification height to avoid clipping text and/or icons.
corner_radius = 5
# Ignore the dbus closeNotification message.
# Useful to enforce the timeout set by dunst configuration. Without this
# parameter, an application may close the notification sent before the
# user defined timeout.
ignore_dbusclose = false
### Wayland ###
# These settings are Wayland-specific. They have no effect when using X11
# Uncomment this if you want to let notications appear under fullscreen
# applications (default: overlay)
# layer = top
# Set this to true to use X11 output on Wayland.
force_xwayland = false
### Legacy
# Use the Xinerama extension instead of RandR for multi-monitor support.
# This setting is provided for compatibility with older nVidia drivers that
# do not support RandR and using it on systems that support RandR is highly
# discouraged.
#
# By enabling this setting dunst will not be able to detect when a monitor
# is connected or disconnected which might break follow mode if the screen
# layout changes.
force_xinerama = false
### mouse
# Defines list of actions for each mouse event
# Possible values are:
# * none: Don't do anything.
# * do_action: Invoke the action determined by the action_name rule. If there is no
# such action, open the context menu.
# * open_url: If the notification has exactly one url, open it. If there are multiple
# ones, open the context menu.
# * close_current: Close current notification.
# * close_all: Close all notifications.
# * context: Open context menu for the notification.
# * context_all: Open context menu for all notifications.
# These values can be strung together for each mouse event, and
# will be executed in sequence.
mouse_left_click = close_current
mouse_middle_click = do_action, close_current
mouse_right_click = close_all
# Experimental features that may or may not work correctly. Do not expect them
# to have a consistent behaviour across releases.
[experimental]
# Calculate the dpi to use on a per-monitor basis.
# If this setting is enabled the Xft.dpi value will be ignored and instead
# dunst will attempt to calculate an appropriate dpi value for each monitor
# using the resolution and physical size. This might be useful in setups
# where there are multiple screens with very different dpi values.
per_monitor_dpi = false
[urgency_low]
# IMPORTANT: colors have to be defined in quotation marks.
# Otherwise the "#" and following would be interpreted as a comment.
background = "#303446"
foreground = "#c6d0f5"
timeout = 5
# Icon for notifications with low urgency, uncomment to enable
#default_icon = /path/to/icon
[urgency_normal]
background = "#303446"
foreground = "#c6d0f5"
timeout = 5
# Icon for notifications with normal urgency, uncomment to enable
#default_icon = /path/to/icon
[urgency_critical]
background = "#303446"
foreground = "#c6d0f5"
frame_color = "#e78284"
timeout = 20
# Icon for notifications with critical urgency, uncomment to enable
#default_icon = /path/to/icon
# Every section that isn't one of the above is interpreted as a rules to
# override settings for certain messages.
#
# Messages can be matched by
# appname (discouraged, see desktop_entry)
# body
# category
# desktop_entry
# icon
# match_transient
# msg_urgency
# stack_tag
# summary
#
# and you can override the
# background
# foreground
# format
# frame_color
# fullscreen
# new_icon
# set_stack_tag
# set_transient
# set_category
# timeout
# urgency
# icon_position
# skip_display
# history_ignore
# action_name
# word_wrap
# ellipsize
# alignment
# hide_text
#
# Shell-like globbing will get expanded.
#
# Instead of the appname filter, it's recommended to use the desktop_entry filter.
# GLib based applications export their desktop-entry name. In comparison to the appname,
# the desktop-entry won't get localized.
#
# SCRIPTING
# You can specify a script that gets run when the rule matches by
# setting the "script" option.
# The script will be called as follows:
# script appname summary body icon urgency
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
#
# NOTE: It might be helpful to run dunst -print in a terminal in order
# to find fitting options for rules.
# Disable the transient hint so that idle_threshold cannot be bypassed from the
# client
#[transient_disable]
# match_transient = yes
# set_transient = no
#
# Make the handling of transient notifications more strict by making them not
# be placed in history.
#[transient_history_ignore]
# match_transient = yes
# history_ignore = yes
# fullscreen values
# show: show the notifications, regardless if there is a fullscreen window opened
# delay: displays the new notification, if there is no fullscreen window active
# If the notification is already drawn, it won't get undrawn.
# pushback: same as delay, but when switching into fullscreen, the notification will get
# withdrawn from screen again and will get delayed like a new notification
#[fullscreen_delay_everything]
# fullscreen = delay
#[fullscreen_show_critical]
# msg_urgency = critical
# fullscreen = show
#[espeak]
# summary = "*"
# script = dunst_espeak.sh
#[script-test]
# summary = "*script*"
# script = dunst_test.sh
#[ignore]
# # This notification will not be displayed
# summary = "foobar"
# skip_display = true
#[history-ignore]
# # This notification will not be saved in history
# summary = "foobar"
# history_ignore = yes
#[skip-display]
# # This notification will not be displayed, but will be included in the history
# summary = "foobar"
# skip_display = yes
#[signed_on]
# appname = Pidgin
# summary = "*signed on*"
# urgency = low
#
#[signed_off]
# appname = Pidgin
# summary = *signed off*
# urgency = low
#
#[says]
# appname = Pidgin
# summary = *says*
# urgency = critical
#
#[twitter]
# appname = Pidgin
# summary = *twitter.com*
# urgency = normal
#
#[stack-volumes]
# appname = "some_volume_notifiers"
# set_stack_tag = "volume"
#
# vim: ft=cfg

View File

@@ -1,9 +1,9 @@
set $mod Mod4 set $mod Mod4
# Reload Restart config # Reload Restart config | moved to rofi
bindsym $mod+c reload #bindsym $mod+c reload
bindsym $mod+r restart #bindsym $mod+r restart
bindsym $mod+e exit #bindsym $mod+e exit
# Floating Modifier # Floating Modifier
floating_modifier $mod floating_modifier $mod
@@ -98,8 +98,7 @@ default_border pixel 1
# Gaps # Gaps
gaps inner 10px gaps inner 10px
hide_edge_borders smart_no_gaps smart_gaps off
smart_gaps on
gaps inner 5 gaps inner 5
#smart|ignore|leave_fullscreen #smart|ignore|leave_fullscreen
@@ -129,40 +128,45 @@ set_from_resource $white i3wm.color7 #f6f7f9
# class border backgr. text indicator child_border # class border backgr. text indicator child_border
client.focused $blue $bg $blue $purple $blue client.focused $blue $bg $blue $purple $blue
client.focused_inactive $bgdaer $bgli $fglier $purple $bgdaer client.focused_inactive $bgda $bgli $fglier $purple $bgda
client.unfocused $bgdaer $bg $fg $purple $bgdaer client.unfocused $bgdaer $bg $fg $purple $bgdaer
client.urgent $red $bg $fg $purple $bgli client.urgent $red $bg $fg $purple $red
client.placeholder $bgli $bg $fg $purple $bgli client.placeholder $bgdaer $bg $fg $purple $bgdaer
client.background $bg client.background $bg
########### ###########
# Startup # # Startup #
########### ###########
exec --no-startup-id xrandr --output HDMI-1 --primary --right-of HDMI-0 exec --no-startup-id xrandr --output HDMI-1 --primary --right-of HDMI-0
exec_always --no-startup-id /etc/i3/wallpapers.sh exec_always --no-startup-id /usr/local/share/dotfiles/scripts/wallpapers.sh
exec_always --no-startup-id "killall picom ; picom" exec_always --no-startup-id "killall picom ; picom"
exec_always --no-startup-id "killall dunst ; dunst" exec_always --no-startup-id "killall dunst ; dunst"
exec_always --no-startup-id "killall polybar ; polybar HDMI-0 ; polybar HDMI-1" exec_always --no-startup-id "killall polybar ; polybar HDMI-1 & polybar HDMI-0 &"
exec_always --no-startup-id "killall nextcloud ; nextcloud" #exec_always --no-startup-id "killall nextcloud ; nextcloud"
################# #################
# Apps shortcut # # Apps shortcut #
################# #################
# start dmenu (a program launcher) bindsym Print exec --no-startup-id flameshot gui
bindsym $mod+d exec --no-startup-id dmenu_run_history -l 10 -fn "ComicShannsMono Nerd Font" -nb "#282c34" -nf "#61AFEF" -sb "#61AFEF" -sf "#282C34"
bindsym $mod+d exec --no-startup-id rofi -show drun -show-icons
bindsym $mod+l exec --no-startup-id /usr/local/share/dotfiles/scripts/disconnect.sh
bindsym $mod+b exec --no-startup-id /usr/local/share/dotfiles/scripts/bookmarks.sh
bindsym $mod+m exec --no-startup-id /usr/local/share/dotfiles/scripts/mpv.sh
bindsym $mod+g exec --no-startup-id /usr/local/share/dotfiles/scripts/search.sh
bindsym $mod+c exec --no-startup-id rofi -show calc -theme disconnect.rasi
bindsym Print exec flameshot gui
bindsym $mod+Shift+p exec --no-startup-id pavucontrol bindsym $mod+Shift+p exec --no-startup-id pavucontrol
bindsym $mod+Shift+d exec --no-startup-id discord bindsym $mod+Shift+d exec --no-startup-id discord --no-sandbox
bindsym $mod+Shift+f exec --no-startup-id firefox bindsym $mod+Shift+f exec --no-startup-id firefox
bindsym $mod+Shift+s exec --no-startup-id steam bindsym $mod+Shift+s exec --no-startup-id steam
# Start a terminal # Start a terminal
bindsym $mod+Return exec --no-startup-id urxvt bindsym $mod+Return exec --no-startup-id urxvt
# Display help # Display help
for_window [instance="cheatsheet"] floating enable for_window [instance="cheatsheet"] floating enable
bindsym $mod+s exec --no-startup-id urxvt -geometry 160x40 -name cheatsheet -e /etc/i3/i3wm_key_help.sh bindsym $mod+s exec --no-startup-id urxvt -geometry 120x40 -name cheatsheet -e /usr/local/share/dotfiles/scripts/i3wm_key_help.sh

437
links/picom/picom.conf Normal file
View File

@@ -0,0 +1,437 @@
#################################
# Shadows #
#################################
# Enabled client-side shadows on windows. Note desktop windows
# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
# unless explicitly requested using the wintypes option.
#
# shadow = false
#shadow = false;
# The blur radius for shadows, in pixels. (defaults to 12)
# shadow-radius = 12
#shadow-radius = 8;
# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
# shadow-opacity = .75
# The left offset for shadows, in pixels. (defaults to -15)
# shadow-offset-x = -15
#shadow-offset-x = -17;
# The top offset for shadows, in pixels. (defaults to -15)
# shadow-offset-y = -15
#shadow-offset-y = -17;
# Red color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-red = 0
# Green color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-green = 0
# Blue color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-blue = 0
# Hex string color value of shadow (#000000 - #FFFFFF, defaults to #000000). This option will override options set shadow-(red/green/blue)
# shadow-color = "#000000"
# Specify a list of conditions of windows that should have no shadow.
#
# examples:
# shadow-exclude = "n:e:Notification";
#
# shadow-exclude = []
#shadow-exclude = [
# "name = 'Notification'",
# "class_g = 'Conky'",
# "class_g ?= 'Notify-osd'",
# "class_g = 'Cairo-clock'",
# "_GTK_FRAME_EXTENTS@:c"
#];
# Specify a list of conditions of windows that should have no shadow painted over, such as a dock window.
# clip-shadow-above = []
# Specify a X geometry that describes the region in which shadow should not
# be painted in, such as a dock window region. Use
# shadow-exclude-reg = "x10+0+0"
# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
#
# shadow-exclude-reg = ""
# Crop shadow of a window fully on a particular Xinerama screen to the screen.
# xinerama-shadow-crop = false
#################################
# Fading #
#################################
# Fade windows in/out when opening/closing and when opacity changes,
# unless no-fading-openclose is used.
# fading = false
fading = true;
# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
# fade-in-step = 0.028
fade-in-step = 0.03;
# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
# fade-out-step = 0.03
fade-out-step = 0.03;
# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
# fade-delta = 10
# Specify a list of conditions of windows that should not be faded.
fade-exclude = [
"class_g = 'dmenu'",
]
# Do not fade on window open/close.
# no-fading-openclose = false
# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
# no-fading-destroyed-argb = false
#################################
# Transparency / Opacity #
#################################
# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
# inactive-opacity = 1
inactive-opacity = 0.75;
# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
# frame-opacity = 1.0
#frame-opacity = 0.75;
# Let inactive opacity set by -i override the '_NET_WM_WINDOW_OPACITY' values of windows.
# inactive-opacity-override = true
inactive-opacity-override = false;
# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
active-opacity = 0.95;
# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
# inactive-dim = 0.0
# Specify a list of conditions of windows that should never be considered focused.
# focus-exclude = []
#focus-exclude = [
#];
# Use fixed inactive dim value, instead of adjusting according to window opacity.
# inactive-dim-fixed = 1.0
# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
# like `50:name *= "Firefox"`. picom-trans is recommended over this.
# Note we don't make any guarantee about possible conflicts with other
# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
# example:
#opacity-rule = [ "75:class_g = 'Polybar'" ];
#
opacity-rule = [
"100:class_g = 'firefox'",
"100:class_g = 'mpv'",
"75:class_g = 'dmenu'",
"100:class_g = 'dontstarve_steam_x64'"
];
#################################
# Corners #
#################################
# Sets the radius of rounded window corners. When > 0, the compositor will
# round the corners of windows. Does not interact well with
# `transparent-clipping`.
corner-radius = 0
# Exclude conditions for rounded corners.
rounded-corners-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'"
];
#################################
# Background-Blurring #
#################################
# Parameters for background blurring, see the *BLUR* section for more information.
blur-method = "dual_kawase"
blur-size = 3
#
blur-deviation = true
#
blur-strength = 3
# Blur background of semi-transparent / ARGB windows.
# Bad in performance, with driver-dependent behavior.
# The name of the switch may change without prior notifications.
#
# blur-background = true
# Blur background of windows when the window frame is not opaque.
# Implies:
# blur-background
# Bad in performance, with driver-dependent behavior. The name may change.
#
# blur-background-frame = false
# Use fixed blur strength rather than adjusting according to window opacity.
# blur-background-fixed = false
# Specify the blur convolution kernel, with the following format:
# example:
# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
#
# blur-kern = ""
blur-kern = "3x3box";
# Exclude conditions for background blur.
# blur-background-exclude = []
blur-background-exclude = [
# "window_type = 'dock'",
"class_g = 'mpv'",
"window_type = 'desktop'",
"_GTK_FRAME_EXTENTS@:c"
];
#################################
# General Settings #
#################################
# Enable remote control via D-Bus. See the man page for more details.
# dbus = true
# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
# daemon = false
# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
# `xrender` is the default one.
#
backend = "glx"
# backend = "xrender";
# Enable/disable VSync.
# vsync = false
vsync = true;
# Enable remote control via D-Bus. See the *D-BUS API* section below for more details.
# dbus = false
# Try to detect WM windows (a non-override-redirect window with no
# child that has 'WM_STATE') and mark them as active.
#
# mark-wmwin-focused = false
mark-wmwin-focused = true;
# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
# mark-ovredir-focused = false
mark-ovredir-focused = true;
# Try to detect windows with rounded corners and don't consider them
# shaped windows. The accuracy is not very high, unfortunately.
#
# detect-rounded-corners = false
detect-rounded-corners = true;
# Detect '_NET_WM_WINDOW_OPACITY' on client windows, useful for window managers
# not passing '_NET_WM_WINDOW_OPACITY' of client windows to frame windows.
#
# detect-client-opacity = false
detect-client-opacity = true;
# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy,
# provided that the WM supports it.
#
# use-ewmh-active-win = false
# Unredirect all windows if a full-screen opaque window is detected,
# to maximize performance for full-screen windows. Known to cause flickering
# when redirecting/unredirecting windows.
#
# unredir-if-possible = false
# Delay before unredirecting the window, in milliseconds. Defaults to 0.
# unredir-if-possible-delay = 0
# Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
# unredir-if-possible-exclude = []
# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
# in the same group focused at the same time.
#
# detect-transient = false
detect-transient = true;
# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
# group focused at the same time. This usually means windows from the same application
# will be considered focused or unfocused at the same time.
# 'WM_TRANSIENT_FOR' has higher priority if detect-transient is enabled, too.
#
# detect-client-leader = false
# Resize damaged region by a specific number of pixels.
# A positive value enlarges it while a negative one shrinks it.
# If the value is positive, those additional pixels will not be actually painted
# to screen, only used in blur calculation, and such. (Due to technical limitations,
# with use-damage, those pixels will still be incorrectly painted to screen.)
# Primarily used to fix the line corruption issues of blur,
# in which case you should use the blur radius value here
# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
# with a 5x5 one you use `--resize-damage 2`, and so on).
# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
#
# resize-damage = 1
# Specify a list of conditions of windows that should be painted with inverted color.
# Resource-hogging, and is not well tested.
#
# invert-color-include = []
# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
# Might cause incorrect opacity when rendering transparent content (but never
# practically happened) and may not work with blur-background.
# My tests show a 15% performance boost. Recommended.
#
glx-no-stencil = true;
# GLX backend: Avoid rebinding pixmap on window damage.
# Probably could improve performance on rapid window content changes,
# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
# Recommended if it works.
#
# glx-no-rebind-pixmap = false
# Disable the use of damage information.
# This cause the whole screen to be redrawn every time, instead of the part of the screen
# has actually changed. Potentially degrades the performance, but might fix some artifacts.
# The opposing option is use-damage
#
# no-use-damage = false
use-damage = true;
# Use X Sync fence to sync clients' draw calls, to make sure all draw
# calls are finished before picom starts drawing. Needed on nvidia-drivers
# with GLX backend for some users.
#
# xrender-sync-fence = false
# GLX backend: Use specified GLSL fragment shader for rendering window
# contents. Read the man page for a detailed explanation of the interface.
#
# window-shader-fg = "default"
# Use rules to set per-window shaders. Syntax is SHADER_PATH:PATTERN, similar
# to opacity-rule. SHADER_PATH can be "default". This overrides window-shader-fg.
#
# window-shader-fg-rule = [
# "my_shader.frag:window_type != 'dock'"
# ]
# Force all windows to be painted with blending. Useful if you
# have a glx-fshader-win that could turn opaque pixels transparent.
#
# force-win-blend = false
# Do not use EWMH to detect fullscreen windows.
# Reverts to checking if a window is fullscreen based only on its size and coordinates.
#
# no-ewmh-fullscreen = false
# Dimming bright windows so their brightness doesn't exceed this set value.
# Brightness of a window is estimated by averaging all pixels in the window,
# so this could comes with a performance hit.
# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0)
#
# max-brightness = 1.0
# Make transparent windows clip other windows like non-transparent windows do,
# instead of blending on top of them.
#
# transparent-clipping = false
# Specify a list of conditions of windows that should never have transparent
# clipping applied. Useful for screenshot tools, where you need to be able to
# see through transparent parts of the window.
#
# transparent-clipping-exclude = []
# Set the log level. Possible values are:
# "trace", "debug", "info", "warn", "error"
# in increasing level of importance. Case doesn't matter.
# If using the "TRACE" log level, it's better to log into a file
# using *--log-file*, since it can generate a huge stream of logs.
#
# log-level = "debug"
log-level = "warn";
# Set the log file.
# If *--log-file* is never specified, logs will be written to stderr.
# Otherwise, logs will to written to the given file, though some of the early
# logs might still be written to the stderr.
# When setting this option from the config file, it is recommended to use an absolute path.
#
# log-file = "/path/to/your/log/file"
# Show all X errors (for debugging)
# show-all-xerrors = false
# Write process ID to a file.
# write-pid-path = "/path/to/your/log/file"
# Window type settings
#
# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
# "unknown", "desktop", "dock", "toolbar", "menu", "utility",
# "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
# "tooltip", "notification", "combo", and "dnd".
#
# Following per window-type options are available: ::
#
# fade, shadow:::
# Controls window-type-specific shadow and fade settings.
#
# opacity:::
# Controls default opacity of the window type.
#
# focus:::
# Controls whether the window of this type is to be always considered focused.
# (By default, all window types except "normal" and "dialog" has this on.)
#
# full-shadow:::
# Controls whether shadow is drawn under the parts of the window that you
# normally won't be able to see. Useful when the window has parts of it
# transparent, and you want shadows in those areas.
#
# clip-shadow-above:::
# Controls whether shadows that would have been drawn above the window should
# be clipped. Useful for dock windows that should have no shadow painted on top.
#
# redir-ignore:::
# Controls whether this type of windows should cause screen to become
# redirected again after been unredirected. If you have unredir-if-possible
# set, and doesn't want certain window to cause unnecessary screen redirection,
# you can set this to `true`.
#
wintypes:
{
tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; };
dock = { shadow = false; clip-shadow-above = true; }
dnd = { shadow = false; }
# popup_menu = { opacity = 0.8; }
# dropdown_menu = { opacity = 0.8; }
};

View File

@@ -17,15 +17,15 @@
;========================================================== ;==========================================================
[colors] [colors]
background = #303446 background = #cc303446
background-alt = #232634 background-alt = #21252b
foreground = #c6d0f5 foreground = #c6d0f5
primary = #8caaee primary = #8caaee
alert = #e78284 alert = #e78284
disabled = #737994 disabled = #b5bfe2
[bar/HDMI-0] [bar/HDMI-0]
monitor = Virtual-1 monitor = HDMI-0
width = 100% width = 100%
height = 30px height = 30px
@@ -41,11 +41,12 @@ border-size = 0pt
padding-left = 10px padding-left = 10px
padding-right = 0px padding-right = 0px
font-0 = ComicShannsMono Nerd Font:pixelsize=14;2 font-0 = ComicShannsMono Nerd Font:size=14;2
font-1 = Polybar:pixelsize=20;2 font-1 = ComicShannsMono Nerd Font:size=14;1
font-2 = ComicShannsMono Nerd Font:size=14;0
fixed-center = true fixed-center = true
modules-left = cpu separator memory separator filesystem separator eth separator ethspeed separator pulseaudio modules-left = cpu separator memory separator filesystemprefix filesystem separator eth separator ethspeed separator pulseaudio
modules-center = i3 modules-center = i3
modules-right = xkeyboard separator dateprefix date modules-right = xkeyboard separator dateprefix date
@@ -71,11 +72,12 @@ border-size = 0pt
padding-left = 10px padding-left = 10px
padding-right = 0px padding-right = 0px
font-0 = ComicShannsMono Nerd Font:pixelsize=14;2 font-0 = ComicShannsMono Nerd Font:size=14;2
font-1 = Polybar:pixelsize=20;2 font-1 = ComicShannsMono Nerd Font:size=14;1
font-2 = ComicShannsMono Nerd Font:size=14;0
fixed-center = true fixed-center = true
modules-left = cpu separator memory separator filesystem separator eth separator ethspeed separator pulseaudio modules-left = cpu separator memory separator filesystemprefix filesystem separator eth separator ethspeed separator pulseaudio
modules-center = i3 modules-center = i3
modules-right = pacman separator xkeyboard separator dateprefix date systray modules-right = pacman separator xkeyboard separator dateprefix date systray
@@ -126,13 +128,23 @@ label-separator = " "
label-separator-padding = 0px label-separator-padding = 0px
label-separator-foreground = #ffb52a label-separator-foreground = #ffb52a
[module/filesystemprefix]
type = custom/text
format = <label>
fotmat-font = 1
format-foreground=${colors.primary}
label = " "
label-font = 2
label-padding-right = 10px
[module/filesystem] [module/filesystem]
type = internal/fs type = internal/fs
interval = 25 interval = 25
mount-0 = / mount-0 = /
label-mounted = %{F8caaee}%{F-}%percentage_used%%
label-mounted = %{F#8caaee} %{F-} %percentage_used%%
label-mounted-font = 1 label-mounted-font = 1
label-unmounted = %mountpoint% not mounted label-unmounted = %mountpoint% not mounted
@@ -142,8 +154,9 @@ label-unmounted-foreground = ${colors.disabled}
type = internal/pulseaudio type = internal/pulseaudio
format-volume = <label-volume> format-volume = <label-volume>
format-volume-prefix-font = 1
format-volume-prefix = " " format-volume-prefix = " "
format-volume-prefix-font = 3
format-volume-prefix-padding-right = 5px
format-volume-prefix-foreground = ${colors.primary} format-volume-prefix-foreground = ${colors.primary}
label-volume = "%percentage%%" label-volume = "%percentage%%"
@@ -165,6 +178,7 @@ label-indicator-background = ${colors.primary}
type = internal/memory type = internal/memory
interval = 2 interval = 2
format-prefix = " " format-prefix = " "
format-prefix-font = 3
format-prefix-foreground = ${colors.primary} format-prefix-foreground = ${colors.primary}
label = %percentage_used:2%% label = %percentage_used:2%%
@@ -172,6 +186,8 @@ label = %percentage_used:2%%
type = internal/cpu type = internal/cpu
interval = 2 interval = 2
format-prefix = " " format-prefix = " "
format-prefix-font = 2
format-prefix-padding-right = 8px
format-prefix-foreground = ${colors.primary} format-prefix-foreground = ${colors.primary}
label = %percentage%% label = %percentage%%
@@ -181,6 +197,8 @@ interface-type = wired
interval = 5 interval = 5
format-connected = <label-connected> format-connected = <label-connected>
format-connected-prefix = " " format-connected-prefix = " "
format-connected-prefix-font = 2
format-connected-prefix-padding-right = 8px
format-connected-prefix-foreground = ${colors.primary} format-connected-prefix-foreground = ${colors.primary}
label-connected = %ifname% %local_ip% label-connected = %ifname% %local_ip%
@@ -191,9 +209,11 @@ interface-type = wired
interval = 5 interval = 5
format-connected = <label-connected> format-connected = <label-connected>
format-connected-prefix = "󰾆 " format-connected-prefix = "󰾆 "
format-connected-prefix-font = 3
format-connected-prefix-padding-right = 5px
format-connected-prefix-foreground = ${colors.primary} format-connected-prefix-foreground = ${colors.primary}
label-connected = %upspeed% %downspeed% label-connected = %upspeed% %downspeed%
[module/pacman] [module/pacman]
type = custom/script type = custom/script
exec = pacman -Syup | head -n -4 | wc -l exec = pacman -Syup | head -n -4 | wc -l
@@ -201,21 +221,23 @@ interval = 600
format = <label> format = <label>
format-prefix = " " format-prefix = " "
format-prefix-font = 2
format-prefix-padding-right = 5px
format-prefix-foreground=${colors.primary} format-prefix-foreground=${colors.primary}
[module/dateprefix] [module/dateprefix]
type = custom/text type = custom/text
exec = date +"%a %Y-%m-%d %H:%M:%S"
;interval = 1
format = <label> format = <label>
fotmat-font = 1
format-foreground=${colors.primary} format-foreground=${colors.primary}
label = " " label = " "
label-font = 3
label-padding-right = 5px label-padding-right = 5px
click-left = /etc/polybar/calendar.sh click-left = /usr/local/share/dotfiles/scripts/calendar.sh
[module/date] [module/date]
type = internal/date type = internal/date
@@ -232,4 +254,3 @@ label-padding-right = 10px
[settings] [settings]
screenchange-reload = true screenchange-reload = true
pseudo-transparency = false pseudo-transparency = false

8
links/rofi/colors.rasi Normal file
View File

@@ -0,0 +1,8 @@
* {
/* Some variables */
bg: #303446;
bg-transparent: #303446cc;
transparent: #0000;
fg: #c6d0f5;
blue: #8caaee;
}

152
links/rofi/config.rasi Normal file
View File

@@ -0,0 +1,152 @@
configuration {
modes: "window,drun,run,ssh,combi";
/* font: "mono 12";*/
/* location: 0;*/
/* yoffset: 0;*/
/* xoffset: 0;*/
/* fixed-num-lines: true;*/
show-icons: false;
/* terminal: "rofi-sensible-terminal";*/
/* ssh-client: "ssh";*/
/* ssh-command: "{terminal} -e {ssh-client} {host} [-p {port}]";*/
/* run-command: "{cmd}";*/
/* run-list-command: "";*/
/* run-shell-command: "{terminal} -e {cmd}";*/
/* window-command: "wmctrl -i -R {window}";*/
/* window-match-fields: "all";*/
icon-theme: "Papirus";
/* drun-match-fields: "name,generic,exec,categories,keywords";*/
/* drun-categories: ;*/
/* drun-show-actions: false;*/
/* drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]";*/
/* drun-url-launcher: "xdg-open";*/
/* disable-history: false;*/
/* ignored-prefixes: "";*/
/* sort: false;*/
/* sorting-method: "normal";*/
case-sensitive: false;
/* cycle: true;*/
/* sidebar-mode: false;*/
/* hover-select: false;*/
/* eh: 1;*/
/* auto-select: false;*/
/* parse-hosts: false;*/
/* parse-known-hosts: true;*/
/* combi-modes: "window,run";*/
/* matching: "normal";*/
/* tokenize: true;*/
/* m: "-5";*/
/* filter: ;*/
/* dpi: -1;*/
/* threads: 0;*/
/* scroll-method: 0;*/
/* window-format: "{w} {c} {t}";*/
/* click-to-exit: true;*/
/* max-history-size: 25;*/
/* combi-hide-mode-prefix: false;*/
/* combi-display-format: "{mode} {text}";*/
/* matching-negate-char: '-' /* unsupported */;*/
/* cache-dir: ;*/
/* window-thumbnail: false;*/
/* drun-use-desktop-cache: false;*/
/* drun-reload-desktop-cache: false;*/
/* normalize-match: false;*/
/* steal-focus: false;*/
/* application-fallback-icon: ;*/
/* refilter-timeout-limit: 8192;*/
/* xserver-i300-workaround: false;*/
/* pid: "/run/user/0/rofi.pid";*/
/* display-window: ;*/
/* display-windowcd: ;*/
/* display-run: ;*/
/* display-ssh: ;*/
/* display-drun: ;*/
/* display-combi: ;*/
/* display-keys: ;*/
/* display-filebrowser: ;*/
/* kb-primary-paste: "Control+V,Shift+Insert";*/
/* kb-secondary-paste: "Control+v,Insert";*/
/* kb-clear-line: "Control+w";*/
/* kb-move-front: "Control+a";*/
/* kb-move-end: "Control+e";*/
/* kb-move-word-back: "Alt+b,Control+Left";*/
/* kb-move-word-forward: "Alt+f,Control+Right";*/
/* kb-move-char-back: "Left,Control+b";*/
/* kb-move-char-forward: "Right,Control+f";*/
/* kb-remove-word-back: "Control+Alt+h,Control+BackSpace";*/
/* kb-remove-word-forward: "Control+Alt+d";*/
/* kb-remove-char-forward: "Delete,Control+d";*/
/* kb-remove-char-back: "BackSpace,Shift+BackSpace,Control+h";*/
/* kb-remove-to-eol: "Control+k";*/
/* kb-remove-to-sol: "Control+u";*/
/* kb-accept-entry: "Control+j,Control+m,Return,KP_Enter";*/
/* kb-accept-custom: "Control+Return";*/
/* kb-accept-custom-alt: "Control+Shift+Return";*/
/* kb-accept-alt: "Shift+Return";*/
/* kb-delete-entry: "Shift+Delete";*/
/* kb-mode-next: "Shift+Right,Control+Tab";*/
/* kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab";*/
/* kb-mode-complete: "Control+l";*/
/* kb-row-left: "Control+Page_Up";*/
/* kb-row-right: "Control+Page_Down";*/
/* kb-row-up: "Up,Control+p";*/
/* kb-row-down: "Down,Control+n";*/
kb-row-tab: "Control+space";
kb-element-next: "";
/* kb-element-prev: "ISO_Left_Tab";*/
/* kb-page-prev: "Page_Up";*/
/* kb-page-next: "Page_Down";*/
/* kb-row-first: "Home,KP_Home";*/
/* kb-row-last: "End,KP_End";*/
kb-row-select: "Tab";
/* kb-screenshot: "Alt+S";*/
/* kb-ellipsize: "Alt+period";*/
/* kb-toggle-case-sensitivity: "grave,dead_grave";*/
/* kb-toggle-sort: "Alt+grave";*/
/* kb-cancel: "Escape,Control+g,Control+bracketleft";*/
/* kb-custom-1: "Alt+1";*/
/* kb-custom-2: "Alt+2";*/
/* kb-custom-3: "Alt+3";*/
/* kb-custom-4: "Alt+4";*/
/* kb-custom-5: "Alt+5";*/
/* kb-custom-6: "Alt+6";*/
/* kb-custom-7: "Alt+7";*/
/* kb-custom-8: "Alt+8";*/
/* kb-custom-9: "Alt+9";*/
/* kb-custom-10: "Alt+0";*/
/* kb-custom-11: "Alt+exclam";*/
/* kb-custom-12: "Alt+at";*/
/* kb-custom-13: "Alt+numbersign";*/
/* kb-custom-14: "Alt+dollar";*/
/* kb-custom-15: "Alt+percent";*/
/* kb-custom-16: "Alt+dead_circumflex";*/
/* kb-custom-17: "Alt+ampersand";*/
/* kb-custom-18: "Alt+asterisk";*/
/* kb-custom-19: "Alt+parenleft";*/
/* kb-select-1: "Super+1";*/
/* kb-select-2: "Super+2";*/
/* kb-select-3: "Super+3";*/
/* kb-select-4: "Super+4";*/
/* kb-select-5: "Super+5";*/
/* kb-select-6: "Super+6";*/
/* kb-select-7: "Super+7";*/
/* kb-select-8: "Super+8";*/
/* kb-select-9: "Super+9";*/
/* kb-select-10: "Super+0";*/
/* ml-row-left: "ScrollLeft";*/
/* ml-row-right: "ScrollRight";*/
/* ml-row-up: "ScrollUp";*/
/* ml-row-down: "ScrollDown";*/
/* me-select-entry: "MousePrimary";*/
/* me-accept-entry: "MouseDPrimary";*/
/* me-accept-custom: "Control+MouseDPrimary";*/
timeout {
action: "kb-cancel";
delay: 0;
}
filebrowser {
directories-first: true;
sorting-method: "name";
}
}
@theme "/root/.local/share/rofi/themes/launcher.rasi"

View File

@@ -0,0 +1,18 @@
/**
* ROFI Color theme
* User: Beastie
* Copyright: GPLv3
*/
@import "launcher.rasi"
window {
width: 30%;
height: 280px;
margin: 0px;
location: center;
anchor: center;
}
mainbox {
children: [inputbar,listview];
}

110
links/rofi/launcher.rasi Normal file
View File

@@ -0,0 +1,110 @@
/**
* ROFI Color theme
* User: Beastie
* Copyright: GPLv3
*/
@import "colors.rasi"
* {
background-color: @transparent;
text-color: @blue;
margin: 5px;
padding: 0px;
border: 0px;
font: "ComicShannsMono Nerd Font 12";
}
window {
width: 90%;
height: 100%;
margin: 0px;
location: north;
anchor: north;
background-color: @bg-transparent;
//background-color: green;
}
mainbox {
spacing: 0px;
children: [inputbar,mode-switcher,listview];
//background-color: red;
}
/* Configure inputbar */
inputbar {
background-color: #0008;
border: 1px;
border-color: @blue;
children: [icon-current-entry,prompt,textbox-prompt-colon,entry,num-filtered-rows,textbox-num-sep,num-rows];
}
prompt, textbox-prompt-colon, entry, num-filtered-rows, textbox-num-sep, num-rows, icon-current-entry {
//background-color: aqua;
text-color: @blue;
vertical-align: 0.5;
}
icon-current-entry {
size: 1.5em;
}
textbox-prompt-colon, textbox-num-sep {
expand: false;
str: "";
}
textbox-num-sep {
str: "/";
}
entry {
placeholder: "Search";
placeholder-color: @bg;
}
/* Configure mode switcher */
mode-switcher {
//background-color: yellow;
border: 1px;
border-color: @blue;
}
button {
background-color: @transparent;
margin: 2px;
text-color: @blue;
}
button selected {
background-color: @blue;
text-color: @bg;
}
/* Configure listview */
listview {
background-color: @transparent;
border: 1px;
border-color: @blue;
}
element {
background-color: @transparent;
margin: 0px;
}
element selected {
background-color: @blue;
}
element-icon {
size: 2em;
}
element-text {
vertical-align: 0.5;
}
element-text selected {
text-color: @bg;
}

View File

@@ -0,0 +1,6 @@
ll=ls --color=auto -lha
grep=grep --color=auto
ip=ip -color=auto
chromium=chromium --no-sandbox
code=code --no-sandbox
rf=rofi -show run

View File

@@ -53,7 +53,7 @@ do
alias "$line" alias "$line"
done < /etc/bash.bashaliases done < /etc/bash.bashaliases
source "/etc/bash.bashexport" source "/etc/bash.bashexports"
PATH=/games:/usr/local/sbin:/usr/local/bin:/usr/bin PATH=/games:/usr/local/sbin:/usr/local/bin:/usr/bin

View File

@@ -2,7 +2,7 @@
Name=en* Name=en*
[Network] [Network]
DHCP=no DHCP=yes
Address=192.168.0.2/24 #Address=192.168.0.2/24
Gateway=192.168.0.254 #Gateway=192.168.0.254

View File

@@ -1,8 +0,0 @@
#!/bin/bash
#Switch to the script directory
_BASENAME=$(basename "$0")
cd "$(dirname "$0")" || _exit 1
cp 00-wired.network /etc/systemd/network/00-wired.network
cp resolved.conf /etc/systemd/resolved.conf

View File

@@ -22,7 +22,6 @@
# Google: 8.8.8.8#dns.google 8.8.4.4#dns.google 2001:4860:4860::8888#dns.google 2001:4860:4860::8844#dns.google # Google: 8.8.8.8#dns.google 8.8.4.4#dns.google 2001:4860:4860::8888#dns.google 2001:4860:4860::8844#dns.google
# Quad9: 9.9.9.9#dns.quad9.net 149.112.112.112#dns.quad9.net 2620:fe::fe#dns.quad9.net 2620:fe::9#dns.quad9.net # Quad9: 9.9.9.9#dns.quad9.net 149.112.112.112#dns.quad9.net 2620:fe::fe#dns.quad9.net 2620:fe::9#dns.quad9.net
DNS=9.9.9.9 DNS=9.9.9.9
FallbackDNS=2001:41d0:303:20da::1 217.182.138.218
#FallbackDNS=1.1.1.1#cloudflare-dns.com 9.9.9.9#dns.quad9.net 8.8.8.8#dns.google 2606:4700:4700::1111#cloudflare-dns.com 2620:fe::9#dns.quad9.net 2001:4860:4860::8888#dns.google #FallbackDNS=1.1.1.1#cloudflare-dns.com 9.9.9.9#dns.quad9.net 8.8.8.8#dns.google 2606:4700:4700::1111#cloudflare-dns.com 2620:fe::9#dns.quad9.net 2001:4860:4860::8888#dns.google
Domains=. Domains=.
#DNSSEC=no #DNSSEC=no

View File

@@ -1,6 +1,7 @@
catppuccin-cursors-latte arc-icon-theme
chromium chromium
code code
curl
discord discord
dmenu dmenu
dunst dunst
@@ -8,13 +9,13 @@ feh
flameshot flameshot
firefox firefox
htop htop
hyprland
i3lock i3lock
i3-wm i3-wm
lxappearance lxappearance
nextcloud-client nextcloud-client
nwg-look nwg-look
otf-comicshanns-nerd otf-comicshanns-nerd
oxygen-icons-svg
pavucontrol pavucontrol
pipewire pipewire
pipewire-jack pipewire-jack
@@ -23,9 +24,11 @@ polybar
python-pywal python-pywal
neofetch neofetch
numlockx numlockx
papirus-icon-theme
picom picom
plocate
polybar polybar
rxvt-unicode-truecolor-wide-glyphs remmina
ttf-dejavu-nerd ttf-dejavu-nerd
wget wget
wireguard-tools wireguard-tools

24
scripts/bookmarks Normal file
View File

@@ -0,0 +1,24 @@
### Do not remove next line
edit
### Gbm Bookmarks
https://gta.grandbesancon.fr (Etempo)
http://s-ipam-p1 (Ipam)
https://teams.microsoft.com (Teams)
### Unixyourbrain bookmarks
https://unixyourbrain.org (Heimdall)
https://accounts.unixyourbrain.org (Authelia)
https://wireguard.unixyourbrain.org (Wireguard)
https://adguard.unixyourbrain.org (Adguard)
https://traefik.unixyourbrain.org (Traefik)
https://lldap.unixyourbrain.org (Lldap)
https://portainer.unixyourbrain.org (Portainer)
https://mail.unixyourbrain.org (Roundcube)
https://passbolt.unixyourbrain.org (Passbolt)
https://wiki.unixyourbrain.org (Wikijs)
https://git.unixyourbrain.org (Gitea)
https://rutorrent.unixyourbrain.org (Rutorrent)
http://10.0.0.1:4447 (Downloads)
https://nextcloud.unixyourbrain.org (Nextcloud)
http://192.168.0.254/ (Freebox)
###
https://www.ygg.re (YggTorrent)

19
scripts/bookmarks.sh Executable file
View File

@@ -0,0 +1,19 @@
#!/bin/bash
_BASENAME=$(basename "$0")
_DIRNAME=$(dirname "$0")
cd "$(dirname "$0")" || _exit 1
_URL=$(grep -Ev "^#" ./bookmarks | rofi -dmenu -i -p Bookmarks)
if [[ "$_URL" == "edit" ]]
then
urxvt -e nvim /usr/local/share/dotfiles/scripts/bookmarks
exit 0
fi
if [[ -n $_URL ]]
then
firefox "$(awk '{print $1}' <<< "$_URL")"
fi

35
scripts/disconnect.sh Executable file
View File

@@ -0,0 +1,35 @@
#!/bin/bash
selected=$(printf "Lock\0icon\x1fsystem-lock-screen
Update\0icon\x1fsystem-software-update
Shutdown\0icon\x1fsystem-shutdown
Reboot\0icon\x1fsystem-reboot
Exit i3\0icon\x1fsystem-log-out
Reload i3\0icon\x1fsystem-log-out
Restart i3\0icon\x1fsystem-log-out" | rofi -dmenu -show-icons -i -theme disconnect -p System)
echo "$selected"
case $selected in
"Reload i3")
i3 reload
;;
"Restart i3")
i3 restart
;;
"Exit i3")
i3 exit
;;
"Update")
urxvt -e /usr/local/share/dotfiles/scripts/update.sh
;;
"Lock")
i3lock
;;
"Shutdown")
systemctl poweroff
;;
"Reboot")
reboot
;;
esac

View File

@@ -15,47 +15,49 @@ _RESET="\e[0m"
# _title [string:bg_color] [string:message] [bool:right] # _title [string:bg_color] [string:message] [bool:right]
_title() { _title() {
printf "$_CR$_E1$_BOLD$_BLACK$1" printf "%b%b%b%b" "$_CR" "$_E1" "$_BOLD" "$_BLACK$1"
[[ ! -z $3 ]] && printf "$_E_RIGHT" [[ -n $3 ]] && printf "%b" "$_E_RIGHT"
for (( i=0; i<(( 10 - ${#2} / 2 )); i++ )) for (( i=0; i<( 10 - ${#2} / 2 ); i++ ))
do do
printf " " printf " "
done done
printf "$2" printf "%s" "$2"
for (( i=0; i<(( 10 - ${#2} / 2 )); i++ )) for (( i=0; i<( 10 - ${#2} / 2 ); i++ ))
do do
printf " " printf " "
done done
(( ${#2} % 2 == 0 )) && printf " " (( ${#2} % 2 == 0 )) && printf " "
printf "$_RESET$_CR" printf "%b%b" "$_RESET" "$_CR"
} }
# _shortcut [string:modifier] [string:key] [string:message] [bool:right] # _shortcut [string:modifier] [string:key] [string:message] [bool:right]
_shortcut() { _shortcut() {
_MODIFIER=$(sed "s|+|\\\e[38;5;1m+\\\e[38;5;5m|g" <<< $1) _MODIFIER=${1//+/\\\e[38;5;1m+\\\e[38;5;5m}
[[ ! -z $4 ]] && printf "$_E_RIGHT" [[ -n $4 ]] && printf "%b" "$_E_RIGHT"
printf "$_E2" printf "%b" "$_E2"
printf "$_PURPLE$_MODIFIER$_RESET" printf "%b%b%b" "$_PURPLE" "$_MODIFIER" "$_RESET"
[[ ! -z $1 ]] && printf "$_RED+$_RESET" [[ -n $1 ]] && printf "%b+%b" "$_RED" "$_RESET"
printf "$_CYAN$2$_RESET" printf "%b%s%b" "$_CYAN" "$2" "$_RESET"
printf " $3" printf " %s" "$3"
printf "$_CR" printf "%b" "$_CR"
} }
_move() { _move() {
printf "\e[$1;$2H" printf "\e[%s;%b" "$1" "$2H"
} }
tput civis tput civis
clear clear
_title "\e[48;5;063m" "i3" _title "\e[48;5;063m" "i3"
_shortcut "Super" "c" "Reload i3" _shortcut "Super" "l" "Shutdown menu"
_shortcut "Super" "r" "Restart i3"
_shortcut "Super" "e" "Exit i3"
_title "\e[48;5;035m" "Applications" _title "\e[48;5;035m" "Applications"
_shortcut "Super" "d" "Dmenu" _shortcut "Super" "d" "Rofi"
_shortcut "Super" "b" "Bookmarks"
_shortcut "Super" "m" "Mpv"
_shortcut "Super" "g" "Google search"
_shortcut "Super" "c" "Calc"
_shortcut "Super+Shift" "f" "Firefox" _shortcut "Super+Shift" "f" "Firefox"
_shortcut "Super+Shift" "s" "Steam" _shortcut "Super+Shift" "s" "Steam"
_shortcut "Super+Shift" "d" "Discord" _shortcut "Super+Shift" "d" "Discord"
@@ -98,4 +100,4 @@ _title "\e[48;5;214m" "Tmux" true
_move 1 1 _move 1 1
read -n 1 -s read -r -n 1 -s

View File

@@ -1,6 +0,0 @@
#!/bin/bash
cd /opt || exit 1
git clone https://aur.archlinux.org/yay.git
cd yay || exit 1
makepkg -sric --noconfirm

32
scripts/mpv.sh Executable file
View File

@@ -0,0 +1,32 @@
#!/bin/bash
_BASENAME=$(basename "$0")
_DIRNAME=$(dirname "$0")
cd "$(dirname "$0")" || _exit 1
## if not $1
if [[ -z $1 ]]
then
_LINES=$(curl "http://10.0.0.1:4447" 2>/dev/null | sed -e "s|.*<a href=\"\([^\"]*\).*|$1\1|" -e "s/.*<.*\|.*C=D.*\|.*\/\/$\|.*.nfo//" -e "/^$/d")
else
_LINES="$(curl "http://10.0.0.1:4447/$1" 2>/dev/null | sed -e "s|.*<a href=\"\([^\"]*\).*|$1\1|" -e "s/.*<.*\|.*C=D.*\|.*\/\/$\|.*.nfo//" -e "/^$/d")"
fi
_RESULT=$(rofi -dmenu -i <<< "$_LINES")
# If no output
echo "$_RESULT"
if [[ -z $_RESULT ]]
then
echo "no output, exiting"
exit 0
fi
#if line end vith /
if [[ "$_RESULT" =~ .*/$ ]]; then
echo "output is a directory"
./mpv.sh "$_RESULT"
exit 0
fi
mpv "http://10.0.0.1:4447/$_RESULT"

22
scripts/search.sh Executable file
View File

@@ -0,0 +1,22 @@
#!/bin/bash
_RESULT=$(printf "Google \0icon\x1fgoogle
Arch \0icon\x1fdistributor-logo-archlinux
Github \0icon\x1fgithub" | rofi -dmenu -show-icons -i -theme disconnect -p Search)
echo "$_RESULT"
_SEARCH_ENGINE="$(cut -d " " -f 1 <<< "$_RESULT")"
_QUERRY="$(cut -d " " -f 2- <<< "$_RESULT")"
case $_SEARCH_ENGINE in
"Google")
firefox "https://www.google.com/search?client=firefox-b-d&q=$_QUERRY"
;;
"Arch")
firefox "https://archlinux.org/packages/?sort=&q=$_QUERRY"
;;
"Github")
firefox "https://github.com/search?q=$_QUERRY"
;;
esac

6
scripts/update.sh Executable file
View File

@@ -0,0 +1,6 @@
#!/bin/bash
set -e
pacman -Syu --noconfirm
read -r

14
scripts/wallpapers.sh Executable file
View File

@@ -0,0 +1,14 @@
#!/bin/bash
_LINES=$(pgrep wallpapers.sh)
while read -r line
do
(("$line" != "$$")) && kill "$line"
done <<< "$_LINES"
while (( $(pgrep i3) ))
do
feh --randomize --bg-max /usr/local/share/wallpapers
sleep 10
done

66
templates/X11/.Xresources Normal file
View File

@@ -0,0 +1,66 @@
*foreground:#{{foreground}}
*foreground-light:#{{foreground_light}}
*foreground-lighter:#{{foreground_lighter}}
*background:#{{background}}
*background-light:#{{background_light}}
*background-dark:#{{background_dark}}
*background-darker:#{{background_darker}}
*cursorColor:#{{cursor_color}}
*scrollBar:false
*saveLines:65535
*termName:rxvt-unicode
*font:xft:DejaVu SansM Nerd Font Mono:style=Regular:size=12:antialias=true
*boldFont:xft:DejaVu SansM Nerd Font Mono:style=Bold:size=12:antialias=true
*intensityStyles:true
*iconFile:/usr/share/icons/ePapirus/96x96/apps/urxvt.svg
*cutchars:"()<>=[]{}|\"\`'*"
*iso14755:false
*utf8:true
*geometry:87x27
!Black
*color0:#{{color0}}
*color8:#{{color8}}
!Red
*color1:#{{color1}}
*color9:#{{color9}}
!Green
*color2:#{{color2}}
*color10:#{{color10}}
!Yellow
*color3:#{{color3}}
*color11:#{{color11}}
!Blue
*color4:#{{color4}}
*color12:#{{color12}}
!Pink
*color5:#{{color5}}
*color13:#{{color13}}
!Teal
*color6:#{{color6}}
*color14:#{{color14}}
!White
*color7:#{{color7}}
*color15:#{{color15}}
!-------------------------
! Rxvt Only
!-------------------------
! scroll up/down
URxvt.keysym.S-Up: command:\033]720;1\007
URxvt.keysym.S-Down: command:\033]721;1\007
URxvt.perl-ext:-confirm-paste
URxvt.perl-lib:/usr/lib/urxvt/perl
URxvt.perl-ext-common:resize-font,matcher
!Configure font size extension :
URxvt.keysym.A-Up: resize-font:bigger
URxvt.keysym.A-Down: resize-font:smaller
URxvt.keysym.A-equal: resize-font:reset
URxvt.keysym.A-slash: resize-font:show
!Configure Url Launcher
URxvt.url-launcher: firefox
URxvt.matcher.button: 1
URxvt.keysym.A-u: perl:matcher:select

459
templates/dunst/dunstrc Normal file
View File

@@ -0,0 +1,459 @@
# See dunst(5) for all configuration options
[global]
### Display ###
# Which monitor should the notifications be displayed on.
monitor = 0
# Display notification on focused monitor. Possible modes are:
# mouse: follow mouse pointer
# keyboard: follow window with keyboard focus
# none: don't follow anything
#
# "keyboard" needs a window manager that exports the
# _NET_ACTIVE_WINDOW property.
# This should be the case for almost all modern window managers.
#
# If this option is set to mouse or keyboard, the monitor option
# will be ignored.
follow = none
### Geometry ###
# dynamic width from 0 to 300
# width = (0, 300)
# constant width of 300
width = (0,300)
# The maximum height of a single notification, excluding the frame.
height = 300
# Position the notification in the top right corner
origin = top-right
# Offset from the origin
offset = 20x50
# Scale factor. It is auto-detected if value is 0.
scale = 0
# Maximum number of notification (0 means no limit)
notification_limit = 20
### Progress bar ###
# Turn on the progess bar. It appears when a progress hint is passed with
# for example dunstify -h int:value:12
progress_bar = true
# Set the progress bar height. This includes the frame, so make sure
# it's at least twice as big as the frame width.
progress_bar_height = 10
# Set the frame width of the progress bar
progress_bar_frame_width = 1
# Set the minimum width for the progress bar
progress_bar_min_width = 150
# Set the maximum width for the progress bar
progress_bar_max_width = 300
# Corner radius for the progress bar. 0 disables rounded corners.
progress_bar_corner_radius = 0
# Corner radius for the icon image.
icon_corner_radius = 0
# Show how many messages are currently hidden (because of
# notification_limit).
indicate_hidden = yes
# The transparency of the window. Range: [0; 100].
# This option will only work if a compositing window manager is
# present (e.g. xcompmgr, compiz, etc.). (X11 only)
transparency = 25
# Draw a line of "separator_height" pixel height between two
# notifications.
# Set to 0 to disable.
# If gap_size is greater than 0, this setting will be ignored.
separator_height = 2
# Padding between text and separator.
padding = 8
# Horizontal padding.
horizontal_padding = 8
# Padding between text and icon.
text_icon_padding = 0
# Defines width in pixels of frame around the notification window.
# Set to 0 to disable.
frame_width = 1
# Defines color of the frame around the notification window.
frame_color = "#{{color4}}"
# Size of gap to display between notifications - requires a compositor.
# If value is greater than 0, separator_height will be ignored and a border
# of size frame_width will be drawn around each notification instead.
# Click events on gaps do not currently propagate to applications below.
gap_size = 5
# Define a color for the separator.
# possible values are:
# * auto: dunst tries to find a color fitting to the background;
# * foreground: use the same color as the foreground;
# * frame: use the same color as the frame;
# * anything else will be interpreted as a X color.
separator_color = frame
# Sort messages by urgency.
sort = yes
# Don't remove messages, if the user is idle (no mouse or keyboard input)
# for longer than idle_threshold seconds.
# Set to 0 to disable.
# A client can set the 'transient' hint to bypass this. See the rules
# section for how to disable this if necessary
# idle_threshold = 120
### Text ###
font = ComicShannsMono Nerd Font 12
# The spacing between lines. If the height is smaller than the
# font height, it will get raised to the font height.
line_height = 0
# Possible values are:
# full: Allow a small subset of html markup in notifications:
# <b>bold</b>
# <i>italic</i>
# <s>strikethrough</s>
# <u>underline</u>
#
# For a complete reference see
# <https://docs.gtk.org/Pango/pango_markup.html>.
#
# strip: This setting is provided for compatibility with some broken
# clients that send markup even though it's not enabled on the
# server. Dunst will try to strip the markup but the parsing is
# simplistic so using this option outside of matching rules for
# specific applications *IS GREATLY DISCOURAGED*.
#
# no: Disable markup parsing, incoming notifications will be treated as
# plain text. Dunst will not advertise that it has the body-markup
# capability if this is set as a global setting.
#
# It's important to note that markup inside the format option will be parsed
# regardless of what this is set to.
markup = full
# The format of the message. Possible variables are:
# %a appname
# %s summary
# %b body
# %i iconname (including its path)
# %I iconname (without its path)
# %p progress value if set ([ 0%] to [100%]) or nothing
# %n progress value if set without any extra characters
# %% Literal %
# Markup is allowed
format = "<b>%s</b>\n%b"
# Alignment of message text.
# Possible values are "left", "center" and "right".
alignment = left
# Vertical alignment of message text and icon.
# Possible values are "top", "center" and "bottom".
vertical_alignment = center
# Show age of message if message is older than show_age_threshold
# seconds.
# Set to -1 to disable.
show_age_threshold = 60
# Specify where to make an ellipsis in long lines.
# Possible values are "start", "middle" and "end".
ellipsize = middle
# Ignore newlines '\n' in notifications.
ignore_newline = no
# Stack together notifications with the same content
stack_duplicates = true
# Hide the count of stacked notifications with the same content
hide_duplicate_count = false
# Display indicators for URLs (U) and actions (A).
show_indicators = yes
### Icons ###
# Recursive icon lookup. You can set a single theme, instead of having to
# define all lookup paths.
enable_recursive_icon_lookup = true
# Set icon theme (only used for recursive icon lookup)
icon_theme = oxygen
# You can also set multiple icon themes, with the leftmost one being used first.
# icon_theme = "Adwaita, breeze"
# Align icons left/right/top/off
icon_position = left
# Scale small icons up to this size, set to 0 to disable. Helpful
# for e.g. small files or high-dpi screens. In case of conflict,
# max_icon_size takes precedence over this.
min_icon_size = 32
# Scale larger icons down to this size, set to 0 to disable
max_icon_size = 64
# Paths to default icons (only neccesary when not using recursive icon lookup)
icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
### History ###
# Should a notification popped up from history be sticky or timeout
# as if it would normally do.
sticky_history = yes
# Maximum amount of notifications kept in history
history_length = 20
### Misc/Advanced ###
# dmenu path.
dmenu = /usr/bin/dmenu -p dunst:
# Browser for opening urls in context menu.
browser = /usr/bin/xdg-open
# Always run rule-defined scripts, even if the notification is suppressed
always_run_script = true
# Define the title of the windows spawned by dunst
title = Dunst
# Define the class of the windows spawned by dunst
class = Dunst
# Define the corner radius of the notification window
# in pixel size. If the radius is 0, you have no rounded
# corners.
# The radius will be automatically lowered if it exceeds half of the
# notification height to avoid clipping text and/or icons.
corner_radius = 5
# Ignore the dbus closeNotification message.
# Useful to enforce the timeout set by dunst configuration. Without this
# parameter, an application may close the notification sent before the
# user defined timeout.
ignore_dbusclose = false
### Wayland ###
# These settings are Wayland-specific. They have no effect when using X11
# Uncomment this if you want to let notications appear under fullscreen
# applications (default: overlay)
# layer = top
# Set this to true to use X11 output on Wayland.
force_xwayland = false
### Legacy
# Use the Xinerama extension instead of RandR for multi-monitor support.
# This setting is provided for compatibility with older nVidia drivers that
# do not support RandR and using it on systems that support RandR is highly
# discouraged.
#
# By enabling this setting dunst will not be able to detect when a monitor
# is connected or disconnected which might break follow mode if the screen
# layout changes.
force_xinerama = false
### mouse
# Defines list of actions for each mouse event
# Possible values are:
# * none: Don't do anything.
# * do_action: Invoke the action determined by the action_name rule. If there is no
# such action, open the context menu.
# * open_url: If the notification has exactly one url, open it. If there are multiple
# ones, open the context menu.
# * close_current: Close current notification.
# * close_all: Close all notifications.
# * context: Open context menu for the notification.
# * context_all: Open context menu for all notifications.
# These values can be strung together for each mouse event, and
# will be executed in sequence.
mouse_left_click = close_current
mouse_middle_click = do_action, close_current
mouse_right_click = close_all
# Experimental features that may or may not work correctly. Do not expect them
# to have a consistent behaviour across releases.
[experimental]
# Calculate the dpi to use on a per-monitor basis.
# If this setting is enabled the Xft.dpi value will be ignored and instead
# dunst will attempt to calculate an appropriate dpi value for each monitor
# using the resolution and physical size. This might be useful in setups
# where there are multiple screens with very different dpi values.
per_monitor_dpi = false
[urgency_low]
# IMPORTANT: colors have to be defined in quotation marks.
# Otherwise the "#" and following would be interpreted as a comment.
background = "#{{background}}"
foreground = "#{{foreground}}"
timeout = 5
# Icon for notifications with low urgency, uncomment to enable
#default_icon = /path/to/icon
[urgency_normal]
background = "#{{background}}"
foreground = "#{{foreground}}"
timeout = 5
# Icon for notifications with normal urgency, uncomment to enable
#default_icon = /path/to/icon
[urgency_critical]
background = "#{{background}}"
foreground = "#{{foreground}}"
frame_color = "#{{color1}}"
timeout = 20
# Icon for notifications with critical urgency, uncomment to enable
#default_icon = /path/to/icon
# Every section that isn't one of the above is interpreted as a rules to
# override settings for certain messages.
#
# Messages can be matched by
# appname (discouraged, see desktop_entry)
# body
# category
# desktop_entry
# icon
# match_transient
# msg_urgency
# stack_tag
# summary
#
# and you can override the
# background
# foreground
# format
# frame_color
# fullscreen
# new_icon
# set_stack_tag
# set_transient
# set_category
# timeout
# urgency
# icon_position
# skip_display
# history_ignore
# action_name
# word_wrap
# ellipsize
# alignment
# hide_text
#
# Shell-like globbing will get expanded.
#
# Instead of the appname filter, it's recommended to use the desktop_entry filter.
# GLib based applications export their desktop-entry name. In comparison to the appname,
# the desktop-entry won't get localized.
#
# SCRIPTING
# You can specify a script that gets run when the rule matches by
# setting the "script" option.
# The script will be called as follows:
# script appname summary body icon urgency
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
#
# NOTE: It might be helpful to run dunst -print in a terminal in order
# to find fitting options for rules.
# Disable the transient hint so that idle_threshold cannot be bypassed from the
# client
#[transient_disable]
# match_transient = yes
# set_transient = no
#
# Make the handling of transient notifications more strict by making them not
# be placed in history.
#[transient_history_ignore]
# match_transient = yes
# history_ignore = yes
# fullscreen values
# show: show the notifications, regardless if there is a fullscreen window opened
# delay: displays the new notification, if there is no fullscreen window active
# If the notification is already drawn, it won't get undrawn.
# pushback: same as delay, but when switching into fullscreen, the notification will get
# withdrawn from screen again and will get delayed like a new notification
#[fullscreen_delay_everything]
# fullscreen = delay
#[fullscreen_show_critical]
# msg_urgency = critical
# fullscreen = show
#[espeak]
# summary = "*"
# script = dunst_espeak.sh
#[script-test]
# summary = "*script*"
# script = dunst_test.sh
#[ignore]
# # This notification will not be displayed
# summary = "foobar"
# skip_display = true
#[history-ignore]
# # This notification will not be saved in history
# summary = "foobar"
# history_ignore = yes
#[skip-display]
# # This notification will not be displayed, but will be included in the history
# summary = "foobar"
# skip_display = yes
#[signed_on]
# appname = Pidgin
# summary = "*signed on*"
# urgency = low
#
#[signed_off]
# appname = Pidgin
# summary = *signed off*
# urgency = low
#
#[says]
# appname = Pidgin
# summary = *says*
# urgency = critical
#
#[twitter]
# appname = Pidgin
# summary = *twitter.com*
# urgency = normal
#
#[stack-volumes]
# appname = "some_volume_notifiers"
# set_stack_tag = "volume"
#
# vim: ft=cfg

View File

@@ -0,0 +1,256 @@
;==========================================================
;
;
; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗
; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝
; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗
; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║
; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
;
;
; To learn more about how to configure Polybar
; go to https://github.com/polybar/polybar
;
; The README contains a lot of information
;
;==========================================================
[colors]
background = #cc{{background}}
background-alt = #{{background_dark}}
foreground = #{{foreground}}
primary = #{{color4}}
alert = #{{color1}}
disabled = #{{color7}}
[bar/HDMI-0]
monitor = HDMI-0
width = 100%
height = 30px
radius = 0
background = ${colors.background}
foreground = ${colors.foreground}
line-size = 3px
border-size = 0pt
padding-left = 10px
padding-right = 0px
font-0 = ComicShannsMono Nerd Font:size=14;2
font-1 = ComicShannsMono Nerd Font:size=14;1
font-2 = ComicShannsMono Nerd Font:size=14;0
fixed-center = true
modules-left = cpu separator memory separator filesystemprefix filesystem separator eth separator ethspeed separator pulseaudio
modules-center = i3
modules-right = xkeyboard separator dateprefix date
cursor-click = pointer
cursor-scroll = ns-resize
enable-ipc = true
[bar/HDMI-1]
monitor = HDMI-1
width = 100%
height = 30px
radius = 0
background = ${colors.background}
foreground = ${colors.foreground}
line-size = 3px
border-size = 0pt
padding-left = 10px
padding-right = 0px
font-0 = ComicShannsMono Nerd Font:size=14;2
font-1 = ComicShannsMono Nerd Font:size=14;1
font-2 = ComicShannsMono Nerd Font:size=14;0
fixed-center = true
modules-left = cpu separator memory separator filesystemprefix filesystem separator eth separator ethspeed separator pulseaudio
modules-center = i3
modules-right = pacman separator xkeyboard separator dateprefix date systray
cursor-click = pointer
cursor-scroll = ns-resize
enable-ipc = true
[module/separator]
type = custom/text
format = <label>
format-padding = 6px
label = |
[module/systray]
type = internal/tray
format-margin = 0px
tray-spacing = 5px
tray-padding = 0px
tray-size = 90%
[module/i3]
type = internal/i3
pin-workspaces = true
show-urgent = true
enable-scroll = false
format = <label-state>
label-focused = %name%
label-focused-background = ${colors.background-alt}
label-focused-underline= ${colors.primary}
label-focused-padding = 15px
label-unfocused = %name%
label-unfocused-background = ${colors.background-alt}
label-unfocused-padding = 15px
label-urgent = %name%
label-urgent-background = ${colors.alert}
label-urgent-padding = 15px
label-separator = " "
label-separator-padding = 0px
label-separator-foreground = #ffb52a
[module/filesystemprefix]
type = custom/text
format = <label>
fotmat-font = 1
format-foreground=${colors.primary}
label = " "
label-font = 2
label-padding-right = 10px
[module/filesystem]
type = internal/fs
interval = 25
mount-0 = /
label-mounted = %{F{{color4}}}%{F-}%percentage_used%%
label-mounted-font = 1
label-unmounted = %mountpoint% not mounted
label-unmounted-foreground = ${colors.disabled}
[module/pulseaudio]
type = internal/pulseaudio
format-volume = <label-volume>
format-volume-prefix = " "
format-volume-prefix-font = 3
format-volume-prefix-padding-right = 5px
format-volume-prefix-foreground = ${colors.primary}
label-volume = "%percentage%%"
label-volume-font = 1
label-muted = %{F#8caaee}󰝟%{F-} mute
[module/xkeyboard]
type = internal/xkeyboard
blacklist-0 = num lock
label-layout = %layout%
label-layout-foreground = ${colors.primary}
label-indicator-foreground = ${colors.background}
label-indicator-background = ${colors.primary}
[module/memory]
type = internal/memory
interval = 2
format-prefix = " "
format-prefix-font = 3
format-prefix-foreground = ${colors.primary}
label = %percentage_used:2%%
[module/cpu]
type = internal/cpu
interval = 2
format-prefix = " "
format-prefix-font = 2
format-prefix-padding-right = 8px
format-prefix-foreground = ${colors.primary}
label = %percentage%%
[module/eth]
type = internal/network
interface-type = wired
interval = 5
format-connected = <label-connected>
format-connected-prefix = " "
format-connected-prefix-font = 2
format-connected-prefix-padding-right = 8px
format-connected-prefix-foreground = ${colors.primary}
label-connected = %ifname% %local_ip%
[module/ethspeed]
type = internal/network
interface-type = wired
interval = 5
format-connected = <label-connected>
format-connected-prefix = "󰾆 "
format-connected-prefix-font = 3
format-connected-prefix-padding-right = 5px
format-connected-prefix-foreground = ${colors.primary}
label-connected = %upspeed% %downspeed%
[module/pacman]
type = custom/script
exec = pacman -Syup | head -n -4 | wc -l
interval = 600
format = <label>
format-prefix = " "
format-prefix-font = 2
format-prefix-padding-right = 5px
format-prefix-foreground=${colors.primary}
[module/dateprefix]
type = custom/text
format = <label>
fotmat-font = 1
format-foreground=${colors.primary}
label = " "
label-font = 3
label-padding-right = 5px
click-left = /usr/local/share/dotfiles/scripts/calendar.sh
[module/date]
type = internal/date
interval = 1.0
date = %a %Y-%m-%d %H:%M
date-alt = %H:%M:%S
format = <label>
label = %date%
label-padding-right = 10px
[settings]
screenchange-reload = true
pseudo-transparency = false

View File

@@ -0,0 +1,8 @@
* {
/* Some variables */
bg: #{{background}};
bg-transparent: #{{background}}cc;
transparent: #0000;
fg: #{{foreground}};
blue: #{{color4}};
}

33
templates/variables Normal file
View File

@@ -0,0 +1,33 @@
foreground="c6d0f5"
foreground_light="d4d8df"
foreground_lighter="f6f7f9"
background="303446"
background_light="323842"
background_dark="21252b"
background_darker="1e2227"
cursor_color="98c379"
#Black
color0="51576d"
color8="626880"
#Red
color1="e78284"
color9="e78284"
#Green
color2="a6d189"
color10="a6d189"
#Yellow
color3="e5c890"
color11="e5c890"
#Blue
color4="8caaee"
color12="8caaee"
#Pink
color5="f4b8e4"
color13="f4b8e4"
#Teal
color6="81c8be"
color14="81c8be"
#White
color7="b5bfe2"
color15="a5adce"

View File

@@ -1,3 +0,0 @@
ll=ls --color=auto -lha
grep=grep --color=auto
ip=ip -color=auto

View File

@@ -1,18 +0,0 @@
#!/bin/bash
HOSTNAME="ArchTest"
#Switch to the script directory
_BASENAME=$(basename "$0")
cd "$(dirname "$0")" || _exit 1
cp issue /etc/issue
cp inputrc /etc/inputrc
cp bash.bashrc /etc/bash.bashrc
cp bash.bashaliases /etc/bash.bashaliases
cp bash.bashexport /etc/bash.bashexport
mkdir -p /etc/systemd/system/getty@tty1.service.d/
cp autologin.conf /etc/systemd/system/getty@tty1.service.d/override.conf
printf "%s\n" "$HOSTNAME" > /etc/hostname
sed -i "s|^PRETTY_NAME.*|PRETTY_NAME=\"$HOSTNAME\"|" /etc/os-release