AltAtomicSway

This commit is contained in:
2025-06-14 20:49:39 +03:00
commit b49cef745f
118 changed files with 3318 additions and 0 deletions

View File

@ -0,0 +1,32 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# /* wallust template - colors-kitty */
foreground #FBECD3
background #0E0E0F
cursor #FBECD3
active_tab_foreground #0E0E0F
active_tab_background #FBECD3
inactive_tab_foreground #FBECD3
inactive_tab_background #0E0E0F
active_border_color #FBECD3
inactive_border_color #0E0E0F
bell_border_color #100C10
color0 #373738
color1 #100C10
color2 #3C1E1A
color3 #622F22
color4 #434646
color5 #616B64
color6 #B79661
color7 #F1DBB8
color8 #A99981
color9 #151016
color10 #502922
color11 #833E2D
color12 #595D5D
color13 #818F85
color14 #F4C882
color15 #F1DBB8

37
src/Sway/kitty/kitty.conf Executable file
View File

@ -0,0 +1,37 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# wallust-colors
#include kitty-colors.conf
# font_family JetBrainsMonoNerd
font_size 13.0
# bold_font auto
# italic_font auto
# bold_italic_font auto
background_opacity 0.7
confirm_os_window_close 0
# change to x11 or wayland or leave auto
linux_display_server auto
scrollback_lines 2000
wheel_scroll_min_lines 1
enable_audio_bell no
window_padding_width 4
selection_foreground none
selection_background none
foreground #dddddd
background #000000
cursor #dddddd
# BEGIN_KITTY_FONTS
font_family family="JetBrainsMono Nerd Font"
bold_font auto
italic_font auto
bold_italic_font auto
# END_KITTY_FONTS

30
src/Sway/kitty/kitty.conf.bak Executable file
View File

@ -0,0 +1,30 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# wallust-colors
#include kitty-colors.conf
font_family JetBrainsMonoNerd
font_size 15.0
bold_font auto
italic_font auto
bold_italic_font auto
background_opacity 0.7
confirm_os_window_close 0
# change to x11 or wayland or leave auto
linux_display_server auto
scrollback_lines 2000
wheel_scroll_min_lines 1
enable_audio_bell no
window_padding_width 4
selection_foreground none
selection_background none
foreground #dddddd
background #000000
cursor #dddddd

268
src/Sway/sway/config Executable file
View File

@ -0,0 +1,268 @@
# Default config for sway
#
# Copy this to ~/.config/sway/config and edit it to your liking.
#
# Read `man 5 sway` for a complete reference.
#set $gnome-schema org.gnome.desktop.interface
#
#exec_always{
# gsettings set $gnome-schema gtk-theme 'Catppuccin-Dark-Frappe'
#
#}
### Variables
#
# Logo key. Use Mod1 for Alt.
set $mod Mod4
# Home row direction keys, like vim
set $left h
set $down j
set $up k
set $right l
# Your preferred terminal emulator
set $term kitty
# Your preferred application launcher
set $menu rofi
exec waybar
exec_always autotiling
### Output configuration
#
# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/)
output * bg /home/ivan/Загрузки/cozy-cabin-in-the-woods-desktop-wallpaper.jpg fill
#
# Example configuration:
#
output eDP-1 scale 1.50 resolution 1920x1080 position 0,0
#
# You can get the names of your outputs by running: swaymsg -t get_outputs
### Idle configuration
#
# Example configuration:
#
# exec swayidle -w \
# timeout 300 'swaylock -f -c 000000' \
# timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \
# before-sleep 'swaylock -f -c 000000'
#
# This will lock your screen after 300 seconds of inactivity, then turn off
# your displays after another 300 seconds, and turn your screens back on when
# resumed. It will also lock your screen before your computer goes to sleep.
### Input configuration
#
# Example configuration:
#
input "2321:21128:PNP0C50:03_0911:5288_Touchpad" {
dwt enabled
tap enabled
natural_scroll enabled
middle_emulation enabled
}
bindgesture swipe:right workspace prev
bindgesture swipe:left workspace next
#
# You can get the names of your inputs by running: swaymsg -t get_inputs
# Read `man 5 sway-input` for more information about this section.
### Key bindings
#
# Basics:
#
# Start a terminal
bindsym $mod+Q exec $term
# Kill focused window
bindsym $mod+C kill
bindsym $mod+e exec thunar
# Start your launcher
bindsym $mod+d exec rofi -show drun
# Drag floating windows by holding down $mod and left mouse button.
# Resize them with right mouse button + $mod.
# Despite the name, also works for non-floating windows.
# Change normal to inverse to use left mouse button for resizing and right
# mouse button for dragging.
floating_modifier $mod normal
# Reload the configuration file
bindsym $mod+Shift+c reload
# Exit sway (logs you out of your Wayland session)
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
#
# Moving around:
#
# Move your focus around
bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right
# Or use $mod+[up|down|left|right]
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# Move the focused window with the same, but add Shift
bindsym $mod+Shift+$left move left
bindsym $mod+Shift+$down move down
bindsym $mod+Shift+$up move up
bindsym $mod+Shift+$right move right
# Ditto, with arrow keys
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
#
input * {
xkb_layout us,ru
xkb_options grp:alt_shift_toggle
}
# Гапсы
gaps inner 5
gaps outer 5
# smart_gaps on
# Толщина рамок для обычных и плавающих окон
default_border pixel 3
default_floating_border pixel 3
# Размер рамок окон
for_window [tiling] border pixel 2
for_window [floating] border none
# Отключение рамки если открыто одно окно
smart_borders on
# Workspaces:
#
# Switch to workspace
bindsym $mod+1 workspace number 1
bindsym $mod+2 workspace number 2
bindsym $mod+3 workspace number 3
bindsym $mod+4 workspace number 4
bindsym $mod+5 workspace number 5
bindsym $mod+6 workspace number 6
bindsym $mod+7 workspace number 7
bindsym $mod+8 workspace number 8
bindsym $mod+9 workspace number 9
bindsym $mod+0 workspace number 10
# Move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number 1
bindsym $mod+Shift+2 move container to workspace number 2
bindsym $mod+Shift+3 move container to workspace number 3
bindsym $mod+Shift+4 move container to workspace number 4
bindsym $mod+Shift+5 move container to workspace number 5
bindsym $mod+Shift+6 move container to workspace number 6
bindsym $mod+Shift+7 move container to workspace number 7
bindsym $mod+Shift+8 move container to workspace number 8
bindsym $mod+Shift+9 move container to workspace number 9
bindsym $mod+Shift+0 move container to workspace number 10
# Note: workspaces can have any name you want, not just numbers.
# We just use 1-10 as the default.
#
# Layout stuff:
#
# You can "split" the current object of your focus with
# $mod+b or $mod+v, for horizontal and vertical splits
# respectively.
bindsym $mod+b splith
bindsym $mod+v splitv
# Switch the current container between different layout styles
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
# bindsym $mod+e layout toggle split
# Make the current focus fullscreen
bindsym $mod+f fullscreen
# Toggle the current focus between tiling and floating mode
bindsym $mod+Shift+space floating toggle
# Swap focus between the tiling area and the floating area
bindsym $mod+space focus mode_toggle
# Move focus to the parent container
bindsym $mod+a focus parent
#
# Scratchpad:
#
# Sway has a "scratchpad", which is a bag of holding for windows.
# You can send windows there and get them back later.
# Move the currently focused window to the scratchpad
bindsym $mod+Shift+minus move scratchpad
# Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them.
bindsym $mod+minus scratchpad show
#
# Resizing containers:
#
mode "resize" {
# left will shrink the containers width
# right will grow the containers width
# up will shrink the containers height
# down will grow the containers height
bindsym $left resize shrink width 10px
bindsym $down resize grow height 10px
bindsym $up resize shrink height 10px
bindsym $right resize grow width 10px
# Ditto, with arrow keys
bindsym Left resize shrink width 10px
bindsym Down resize grow height 10px
bindsym Up resize shrink height 10px
bindsym Right resize grow width 10px
# Return to default mode
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"
#
# Utilities:
#
# Special keys to adjust volume via PulseAudio
bindsym --locked XF86AudioMute exec pactl set-sink-mute \@DEFAULT_SINK@ toggle
bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -5%
bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +5%
bindsym --locked XF86AudioMicMute exec pactl set-source-mute \@DEFAULT_SOURCE@ toggle
# Special keys to adjust brightness via brightnessctl
bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%-
bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+
# Special key to take a screenshot with grim
bindsym Print exec grim
#
# Status Bar:
#
# Read `man 5 sway-bar` for more information about this section.
#bar {
# position top
#
# # When the status_command prints a new line to stdout, swaybar updates.
# # The default just shows the current date and time.
# status_command while date +'%Y-%m-%d %X'; do sleep 1; done
#
# colors {
# statusline #ffffff
# background #323232
# inactive_workspace #32323200 #32323200 #5c5c5c
# }
#}
include /etc/sway/config.d/*

View File

@ -0,0 +1,16 @@
# sway does not set DISPLAY/WAYLAND_DISPLAY in the systemd user environment
# See FS#63021
# Adapted from xorg's 50-systemd-user.sh, which achieves a similar goal.
# Upstream refuses to set XDG_CURRENT_DESKTOP so we have to.
exec systemctl --user set-environment XDG_CURRENT_DESKTOP=sway
exec systemctl --user import-environment DISPLAY \
SWAYSOCK \
WAYLAND_DISPLAY \
XDG_CURRENT_DESKTOP
exec hash dbus-update-activation-environment 2>/dev/null && \
dbus-update-activation-environment --systemd DISPLAY \
SWAYSOCK \
XDG_CURRENT_DESKTOP=sway \
WAYLAND_DISPLAY

184
src/Sway/waybar/config.jsonc Executable file
View File

@ -0,0 +1,184 @@
// -*- mode: jsonc -*-
{
"layer": "top", // Waybar at top layer
"position": "top", // Waybar position (top|bottom|left|right)
"height": 28, // Waybar height (to be removed for auto height)
"width": 1280, // Waybar width
"spacing": 3, // Gaps between modules (4px)
// Choose the order of the modules
"modules-left": [
"sway/workspaces",
"sway/scratchpad",
"custom/media"
],
"modules-center": [
"sway/window"
],
"modules-right": [
"mpd",
"sway/language",
"pulseaudio#volume",
"network",
"battery",
"clock",
"tray",
"custom/power",
],
// Modules configuration
"sway/workspaces": {
"active-only": false,
"all-outputs": true,
"format": "{icon}",
"show-special": true,
"on-click": "activate",
"on-scroll-up": "hyprctl dispatch workspace e+1",
"on-scroll-down": "hyprctl dispatch workspace e-1",
"format-icons": {
"active": "",
"default": ""
}
},
"custom/sep": {
"format": " ",
"tooltip": false
},
"keyboard-state": {
"numlock": true,
"capslock": true,
"format": "{name} {icon}",
"format-icons": {
"locked": "",
"unlocked": ""
}
},
"sway/language": {
"format": "{}",
"format-en": "EN",
"format-ru": "RU",
"on-scroll-up": "hyprctl switchxkblayout all next",
"on-scroll-down": "hyprctl switchxkblayout all prev",
},
"battery": {
"bat": "BAT1",
"interval": 60,
"states": {
"warning": 30,
"critical": 15
},
"format": "{capacity}% {icon}",
"format-icons": ["", "", "", "", ""],
"max-length": 25
},
"mpd": {
"format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
"format-disconnected": "Disconnected ",
"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
"unknown-tag": "N/A",
"interval": 5,
"consume-icons": {
"on": " "
},
"random-icons": {
"off": "<span color=\"#f53c3c\"></span> ",
"on": " "
},
"repeat-icons": {
"on": " "
},
"single-icons": {
"on": "1 "
},
"state-icons": {
"paused": "",
"playing": ""
},
"tooltip-format": "MPD (connected)",
"tooltip-format-disconnected": "MPD (disconnected)"
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}
},
"tray": {
// "icon-size": 21,
"spacing": 10
},
"clock": {
// "timezone": "America/New_York",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"format-alt": "{:%Y-%m-%d}"
},
"power-profiles-daemon": {
"format": "{icon}",
"tooltip-format": "Power profile: {profile}\nDriver: {driver}",
"tooltip": true,
"format-icons": {
"default": "",
"performance": "",
"balanced": "",
"power-saver": ""
}
},
"network": {
"tooltip": true,
"format-wifi": " ",
"rotate": 0,
"format-ethernet": "󰈀 ",
"tooltip-format": "Сеть: <b>{essid}</b>\nУровень сигнала: <b>{signaldBm}dBm ({signalStrength}%)</b>\nЧастота: <b>{frequency}MHz</b>\nИнтерфейс: <b>{ifname}</b>\nIP: <b>{ipaddr}/{cidr}</b>\nШлюз: <b>{gwaddr}</b>\nМаска сети: <b>{netmask}</b>",
"format-linked": "󰈀 {ifname} (No IP)",
"format-disconnected": "󰖪 ",
"tooltip-format-disconnected": "Нет соединения",
"format-alt": "<span> {bandwidthDownBytes}</span> <span>  {bandwidthUpBytes}</span>",
"interval": 2,
"on-click-right": "kitty nmtui"
},
"pulseaudio#volume": {
"scroll-step": 5,
"format": "{icon} {volume}%",
"format-bluetooth": " {icon} {volume}%",
"format-muted": " Мут",
"tooltip-format": "{desc}",
"format-icons": {
"headphone": " ",
"default": [
" ",
" ",
" "
]
},
"on-click": "pwvucontrol",
"on-click-right": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
},
"custom/media": {
"format": "{icon} {}",
"return-type": "json",
"max-length": 40,
"format-icons": {
"spotify": "",
"default": "🎜"
},
"escape": true,
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
},
"custom/power": {
"format" : "⏻ ",
"tooltip": false,
"menu": "on-click",
"menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder
"menu-actions": {
"shutdown": "shutdown",
"reboot": "reboot",
"suspend": "systemctl suspend",
"hibernate": "systemctl hibernate"
}
}
}

275
src/Sway/waybar/style.css Executable file
View File

@ -0,0 +1,275 @@
* {
/* `otf-font-awesome` is required to be installed for icons */
font-family: JetBrainsMono Nerd Font;
font-weight: 500;
font-size: 12px;
}
window#waybar {
border-radius: 0;
background-color: rgb(48, 52, 70);
border-bottom: 2px solid rgba(221, 221, 255, 1);
color: #ffffff;
transition-property: background-color;
transition-duration: .5s;
}
window#waybar.hidden {
opacity: 0.2;
}
/*
window#waybar.empty {
background-color: transparent;
}
window#waybar.solo {
background-color: #FFFFFF;
}
*/
window#waybar.termite {
background-color: #3F3F3F;
}
window#waybar.chromium {
background-color: #000000;
border: none;
}
button {
/* Use box-shadow instead of border so the text isn't offset */
box-shadow: inset 0 -3px transparent;
/* Avoid rounded borders under each button name */
border: none;
border-radius: 0;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
button:hover {
background: inherit;
box-shadow: inset 0 -3px #ffffff;
}
#workspaces button {
padding: 0 5px;
background-color: transparent;
color: #c6d0f5;
}
#workspaces button.urgent {
background-color: #eb4d4b;
}
#clock,
#language,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#scratchpad,
#power-profiles-daemon,
#battery,
#mpd {
padding: 0 10px;
color: #ffffff;
}
#window,
#workspaces {
margin: 0 4px;
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
#clock {
background-color: transparent;
color: #c6d0f5;
}
#battery {
background-color: transparent;
color: #c6d0f5;
}
@keyframes blink {
to {
background-color: #ffffff;
color: #000000;
}
}
#power-profiles-daemon {
padding-right: 15px;
}
#power-profiles-daemon.performance {
background-color: #f53c3c;
color: #ffffff;
}
#power-profiles-daemon.balanced {
background-color: #2980b9;
color: #ffffff;
}
#power-profiles-daemon.power-saver {
background-color: #2ecc71;
color: #000000;
}
label:focus {
background-color: #000000;
}
#network {
background-color: transparent;
color: #c6d0f5;
}
#network.disconnected {
background-color: #f53c3c;
}
#pulseaudio {
background-color: transparent;
color: #c6d0f5;
}
#pulseaudio.muted {
background-color: transparent;
color: #2a5c45;
}
#wireplumber {
background-color: #fff0f5;
color: #000000;
}
#wireplumber.muted {
background-color: #f53c3c;
}
#custom-media {
background-color: #66cc99;
color: #2a5c45;
min-width: 100px;
}
#custom-media.custom-spotify {
background-color: #66cc99;
}
#custom-media.custom-vlc {
background-color: #ffa000;
}
#tray {
background-color: transparent;
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: #eb4d4b;
}
#idle_inhibitor {
background-color: #2d3436;
}
#idle_inhibitor.activated {
background-color: #ecf0f1;
color: #2d3436;
}
#mpd {
background-color: #66cc99;
color: #2a5c45;
}
#mpd.disconnected {
background-color: #f53c3c;
}
#mpd.stopped {
background-color: #90b1b1;
}
#mpd.paused {
background-color: #51a37a;
}
#language {
background: transparent;
color: #c6d0f5;
padding: 0 5px;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state {
background: #ddddff;
color: #000000;
padding: 0 0px;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state > label {
padding: 0 5px;
}
#keyboard-state > label.locked {
background: rgba(0, 0, 0, 0.2);
}
#scratchpad {
background: rgba(0, 0, 0, 0.2);
}
#scratchpad.empty {
background-color: transparent;
}
#privacy {
padding: 0;
}
#privacy-item {
padding: 0 5px;
color: white;
}
#privacy-item.screenshare {
background-color: #cf5700;
}
#privacy-item.audio-in {
background-color: #1ca000;
}
#privacy-item.audio-out {
background-color: #0069d4;
}

View File

@ -0,0 +1,9 @@
#!/bin/bash
set -e
echo "::group:: ===$(basename "$0")==="
# Branding here
echo "End branding.sh"

View File

@ -0,0 +1,43 @@
#!/bin/bash
set -e
echo "::group:: ===$(basename "$0")==="
# копируем службы
cp /src/configuration/user_exec/systemd/user/* /usr/lib/systemd/user/
# копируем скрипты
cp /src/configuration/user_exec/libexec/* /usr/libexec/
mkdir -p /var/lib/openvpn/dev/
rm -f /var/lib/openvpn/dev/urandom
ln -s /dev/urandom /var/lib/openvpn/dev/urandom
# Включаем сервисы
systemctl --global enable flatpak-install.service
systemctl --global enable pipewire{,-pulse}{,.socket} wireplumber
systemctl enable bluetooth
systemctl enable ly
systemctl enable avahi-daemon
systemctl enable wsdd
# Включаем создание домашних папок
sed -i 's/^[[:space:]]*enabled=false/enabled=True/i' /etc/xdg/user-dirs.conf
# Синхронизируем файлы
rsync -av --progress /src/source/configuration/etc/ /etc/
rsync -av --progress /src/source/configuration/usr/ /usr/
# Обновление dconf
dconf update
# Обновление шрифтов
fc-cache -fv
echo "::endgroup::"

51
src/configuration/03-kernel.sh Executable file
View File

@ -0,0 +1,51 @@
#!/bin/bash
set -euo pipefail
echo "::group:: ===$(basename "$0")==="
# Находим версию ядра
KERNEL_DIR="/usr/lib/modules"
echo "Detecting kernel version..."
KERNEL_VERSION=$(ls "$KERNEL_DIR" | head -n 1)
TARGET_DIR="${KERNEL_DIR}/${KERNEL_VERSION}"
if [[ -z "$KERNEL_VERSION" ]]; then
echo "Error: No kernel version found in $KERNEL_DIR."
exit 1
fi
# Depmod and autoload
depmod -a -v "${KERNEL_VERSION}"
MODULES=$(find "${KERNEL_DIR}/${KERNEL_VERSION}/kernel/drivers" \( \
-path "${KERNEL_DIR}/${KERNEL_VERSION}/kernel/drivers/hid/*" \
-o -path "${KERNEL_DIR}/${KERNEL_VERSION}/kernel/drivers/gpu/*" \
-o -path "${KERNEL_DIR}/${KERNEL_VERSION}/kernel/drivers/pci/*" \
-o -path "${KERNEL_DIR}/${KERNEL_VERSION}/kernel/drivers/mmc/*" \
-o -path "${KERNEL_DIR}/${KERNEL_VERSION}/kernel/drivers/usb/host/*" \
-o -path "${KERNEL_DIR}/${KERNEL_VERSION}/kernel/drivers/usb/storage/*" \
-o -path "${KERNEL_DIR}/${KERNEL_VERSION}/kernel/drivers/nvmem/*" \
-o -path "${KERNEL_DIR}/${KERNEL_VERSION}/kernel/drivers/nvme/*" \
-o -path "${KERNEL_DIR}/${KERNEL_VERSION}/kernel/drivers/virtio/*" \
-o -path "${KERNEL_DIR}/${KERNEL_VERSION}/kernel/drivers/video/fbdev/*" \
\) -type f -name '*.ko*' | sed 's:.*/::')
NVIDIA_EXTRA=()
if [ "$BUILD_TYPE" = "nvidia" ]; then
# Удаляем nvidiafb.* только для NVIDIA сборки
MODULES=$(echo "$MODULES" | grep -v 'nvidiafb\.ko')
# Явное включение директории с драйверами
NVIDIA_EXTRA+=(
--include "${KERNEL_DIR}/${KERNEL_VERSION}/nVidia" "/usr/lib/modules/${KERNEL_VERSION}/nVidia"
)
fi
dracut --force \
--no-hostonly \
--kver "$KERNEL_VERSION" \
--add "qemu ostree virtiofs btrfs base overlayfs bluetooth drm plymouth" \
--add-drivers "gpio-virtio.ko i2c-virtio.ko nd_virtio.ko virtio-iommu.ko virtio_pmem.ko virtio_rpmsg_bus.ko virtio_snd.ko vmw_vsock_virtio_transport.ko vmw_vsock_virtio_transport_common.ko vp_vdpa.ko virtiofs.ko ext4 btrfs.ko ahci.ko sd_mod.ko ahci_platform.ko sd_mod.ko evdev.ko virtio_scsi.ko virtio_blk.ko virtio-rng virtio_net.ko virtio-gpu.ko virtio-mmio.ko virtio_pci.ko virtio_console.ko virtio_input.ko crc32_generic.ko ata_piix.ko $MODULES" \
"${NVIDIA_EXTRA[@]}" \
"${TARGET_DIR}/initramfs.img"
echo "::endgroup::"

9
src/configuration/04-clear.sh Executable file
View File

@ -0,0 +1,9 @@
#!/bin/bash
echo "::group:: ===$(basename "$0")==="
rm -rf /var/root/.cache
rm -rf /var/root/go
rm -rf /boot/*
echo "::endgroup::"

View File

@ -0,0 +1,67 @@
#!/usr/bin/env bash
# Данный скрипт устанавливает приложения Flatpak в пространство пользователя, срабатывает один раз (или по версии).
GROUP_SETUP_VER=1
GROUP_SETUP_VER_FILE="$HOME/.local/share/flatpak-user-install"
if [ "$UID" -lt 1000 ]; then
echo "Not a valid user."
exit 0
fi
# Проверяем выполнение
if [ -f "$GROUP_SETUP_VER_FILE" ]; then
GROUP_SETUP_VER_RAN="$(cat "$GROUP_SETUP_VER_FILE")"
else
GROUP_SETUP_VER_RAN=""
fi
if [ "$GROUP_SETUP_VER" = "$GROUP_SETUP_VER_RAN" ]; then
echo "Flatpak user install (version $GROUP_SETUP_VER) has already run. Exiting..."
exit 0
fi
# Проверка наличия сети и доступности репозитория Flathub
check_network() {
local url="https://dl.flathub.org/repo/"
echo "Checking connection to $url..."
if ! curl --connect-timeout 10 -s -I "$url" >/dev/null; then
echo "Error: Failed to connect to $url"
notify-send "Network error" "Check your internet connection and availability dl.flathub.org." --app-name="Flatpak Manager Service" -u CRITICAL
exit 1
fi
}
check_network
notify-send "Flatpak Installation" "Запущена установка Flatpak приложений" --app-name="Flatpak Manager Service" -u NORMAL
echo "Installing user-level Flatpaks..."
fakeroot flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
flatpak install --user -y flathub com.mattjakeman.ExtensionManager && notify-send "Flatpak Installation" "Installed Extension Manager" --app-name="Flatpak Manager Service" -u NORMAL
flatpak install --user -y flathub org.gnome.NautilusPreviewer && notify-send "Flatpak Installation" "Installed NautilusPreviewer" --app-name="Flatpak Manager Service" -u NORMAL
flatpak install --user -y flathub org.gnome.baobab && notify-send "Flatpak Installation" "Installed baobab" --app-name="Flatpak Manager Service" -u NORMAL
flatpak install --user -y flathub org.gnome.World.PikaBackup && notify-send "Flatpak Installation" "Installed PikaBackup" --app-name="Flatpak Manager Service" -u NORMAL
flatpak install --user -y flathub io.github.dvlv.boxbuddyrs && notify-send "Flatpak Installation" "Installed Boxbuddy" --app-name="Flatpak Manager Service" -u NORMAL
flatpak install --user -y flathub com.github.tchx84.Flatseal && notify-send "Flatpak Installation" "Installed Flatseal" --app-name="Flatpak Manager Service" -u NORMAL
flatpak install --user -y flathub org.telegram.desktop && notify-send "Flatpak Installation" "Installed telegram" --app-name="Flatpak Manager Service" -u NORMAL
flatpak install --user -y flathub com.nextcloud.desktopclient.nextcloud && notify-send "Flatpak Installation" "Installed Nextcloud Desktop" --app-name="Flatpak Manager Service" -u NORMAL
flatpak install --user -y flathub ru.yandex.Browser && notify-send "Flatpak Installation" "Installed Yandex Browser" --app-name="Flatpak Manager Service" -u NORMAL
flatpak install --user -y flathub md.obsidian.Obsidian && notify-send "Flatpak Installation" "Installed Obsidian" --app-name="Flatpak Manager Service" -u NORMAL
flatpak install --user -y flathub org.libreoffice.LibreOffice && notify-send "Flatpak Installation" "Installed LibreOffice" --app-name="Flatpak Manager Service" -u NORMAL
flatpak install --user -y flathub org.gnome.World.Secrets && notify-send "Flatpak Installation" "Installed Secrets" --app-name="Flatpak Manager Service" -u NORMAL
flatpak install --user -y flathub io.github.Foldex.AdwSteamGtk && notify-send "Flatpak Installation" "Installed AdwSteamGtk" --app-name="Flatpak Manager Service" -u NORMAL
flatpak install --user -y flathub com.github.sdv43.whaler && notify-send "Flatpak Installation" "Installed whaler" --app-name="Flatpak Manager Service" -u NORMAL
flatpak install --user -y flathub com.github.hugolabe.Wike && notify-send "Flatpak Installation" "Installed Wike" --app-name="Flatpak Manager Service" -u NORMAL
flatpak install --user -y flathub de.haeckerfelix.Fragments && notify-send "Flatpak Installation" "Installed Fragments" --app-name="Flatpak Manager Service" -u NORMAL
flatpak install --user -y flathub io.github.TransmissionRemoteGtk && notify-send "Flatpak Installation" "Installed TransmissionRemoteGtk" --app-name="Flatpak Manager Service" -u NORMAL
flatpak install --user -y flathub net.davidotek.pupgui2 && notify-send "Flatpak Installation" "Installed pupgui2" --app-name="Flatpak Manager Service" -u NORMAL
flatpak install --user -y flathub org.kde.kdenlive && notify-send "Flatpak Installation" "Installed kdenlive" --app-name="Flatpak Manager Service" -u NORMAL
notify-send "Flatpak Installation" "Установка завершена" --app-name="Flatpak Manager Service" -u NORMAL
echo "Done installing user-level Flatpaks"
# Запоминаем выполнение вместе с версией скрипта
echo "Writing state file"
echo "$GROUP_SETUP_VER" > "$GROUP_SETUP_VER_FILE"

View File

@ -0,0 +1,14 @@
[Unit]
Description=Install user-level Flatpak apps on first login
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStartPre=/bin/sleep 5
ExecStart=/usr/libexec/flatpak-user-install.sh
RemainAfterExit=yes
TimeoutStartSec=600
[Install]
WantedBy=default.target

32
src/main.sh Executable file
View File

@ -0,0 +1,32 @@
#!/bin/bash
set -e
echo "Running scripts"
directories=(
"/src/packages"
"/src/configuration"
"/src/make"
)
run_scripts_in_dir() {
local dir="$1"
echo "=== Running scripts in $dir ==="
# Проверяем, есть ли там скрипты *.sh
if ls "$dir"/*.sh &> /dev/null; then
for script in $(ls "$dir"/*.sh | sort); do
echo "==> Running $script"
bash "$script"
done
else
echo "==> No .sh files found in $dir"
fi
}
for d in "${directories[@]}"; do
run_scripts_in_dir "$d"
done
echo "All scripts executed successfully."

46
src/make/00-atomic-actions.sh Executable file
View File

@ -0,0 +1,46 @@
#!/bin/bash
set -euo pipefail
echo "::group:: ===$(basename "$0")==="
# Define repository and paths
REPO_URL="https://github.com/code-ascend/atomic-actions.git"
BUILD_DIR="/tmp/atomic-actions"
INSTALL_DIR="/usr/local/bin"
ACTIONS_SRC_PATH="${BUILD_DIR}/models/actions"
ACTIONS_DEST_PATH="/usr/local/share/atomic-actions/actions"
# Step 1: Clone the repository
echo "Cloning atomic-actions repository from ${REPO_URL}..."
rm -rf "${BUILD_DIR}" # Ensure no residual directory exists
git clone "${REPO_URL}" "${BUILD_DIR}"
# Step 2: Build the project with Go
echo "Building atomic-actions..."
cd "${BUILD_DIR}"
go build -o "${INSTALL_DIR}/atomic-actions"
# Step 3: Verify binary installation
if [[ -f "${INSTALL_DIR}/atomic-actions" ]]; then
echo "Binary atomic-actions successfully built at ${INSTALL_DIR}/atomic-actions"
chmod +x "${INSTALL_DIR}/atomic-actions" # Make the binary executable
else
echo "Failed to build atomic-actions binary!" >&2
exit 1
fi
# Step 4: Clean and copy actions folder
echo "Preparing actions directory..."
rm -rf "${ACTIONS_DEST_PATH}" # Remove existing actions
mkdir -p "${ACTIONS_DEST_PATH}" # Ensure the target directory exists
cp -r "${ACTIONS_SRC_PATH}/." "${ACTIONS_DEST_PATH}" # Copy actions folder
# Set executable permissions for all scripts in the actions folder
find "${ACTIONS_DEST_PATH}" -type f -name "*.sh" -exec chmod +x {} \;
# Step 5: Cleanup temporary files
echo "Cleaning up..."
rm -rf "${BUILD_DIR}"
echo "End kernel_setup.sh"

19
src/make/01-zsh-plugins.sh Executable file
View File

@ -0,0 +1,19 @@
#!/bin/bash
set -euo pipefail
echo "::group:: ===$(basename "$0")==="
# Создаём каталог для плагинов Zsh
mkdir -p /usr/local/share/zsh/plugins
# Клонируем репозиторий zsh-autosuggestions
if [[ ! -d /usr/local/share/zsh/plugins/zsh-autosuggestions ]]; then
git clone https://github.com/zsh-users/zsh-autosuggestions.git /usr/local/share/zsh/plugins/zsh-autosuggestions
echo "zsh-autosuggestions has been cloned to /usr/local/share/zsh/plugins/zsh-autosuggestions"
else
echo "zsh-autosuggestions already exists, updating..."
git -C /usr/local/share/zsh/plugins/zsh-autosuggestions pull
fi
echo "End kernel_setup.sh"

7
src/packages/00-apt-prepare.sh Executable file
View File

@ -0,0 +1,7 @@
#!/bin/bash
echo "::group:: ===$(basename "$0")==="
apt-get update && apt-get -y dist-upgrade
echo "::endgroup::"

159
src/packages/01-package-list.sh Executable file
View File

@ -0,0 +1,159 @@
#!/bin/bash
set -euo pipefail
echo "::group:: ===$(basename "$0")==="
# Базовые утилиты и инструменты
BASIC_PACKAGES=(
htop
fastfetch
nvtop
notify-send
zsh
zsh-completions
starship
bash-completion
inxi
openssh-server
iucode_tool
systemd-ssh-agent
ptyxis
gparted
obs-studio
mpd
ncmpcpp
icon-theme-Papirus
python3-modules-sqlite3
aplay
mdadm
ffmpeg
yt-dlp
pip
ollama
NetworkManager-applet-gtk
NetworkManager-openvpn
nekoray
grim
)
GAMING_PACKAGES=(
i586-steam
i586-xorg-drv-radeon
i586-xorg-dri-radeon
i586-xorg-dri-swrast
i586-libGL
i586-libEGL
i586-libxatracker
i586-libgbm
i586-libGLES
i586-libGLX
i586-libglvnd
i586-libnsl1
portproton
i586-libvulkan1
i586-libd3d
i586-libgio
i586-libnm
i586-libnss
i586-glibc-nss
i586-glibc-pthread
i586-libunwind
)
# Генератор ZRAM
ZRAM_PACKAGES=(
zram-generator
)
# SWAY — базовые сеансы
SWAY_SESSION_PACKAGES=(
sway
waybar
kitty
thunar
rofi
dunst
ly
xdg-desktop-portal
xdg-user-dirs
brightnessctl
autotiling
pavucontrol
blueman
gnome-disk-utility
swaylock
nwg-look
NetworkManager-tui
)
# GNOME — темы, шрифты и оформление
GNOME_THEMES=(
gtk3-theme-adw-gtk3
gnome-icon-theme
gnome-icon-theme-symbolic
gnome-themes-extra
libgtk2-engine-adwaita
fonts-otf-abattis-cantarell
fonts-ttf-cjkuni-ukai
fonts-ttf-liberation
fonts-ttf-dejavu
)
# Прочие приложения
MISC_APPS=(
virt-manager
firefox
papers
power-profiles-daemon
)
# Xorg-драйверы для различных GPU и устройств
DRIVERS=(
xorg-drv-libinput
xorg-drv-qxl
xorg-drv-spiceqxl
xorg-drv-intel
xorg-drv-amdgpu
xorg-drv-vmware
xorg-drv-nouveau
xorg-dri-swrast
)
# Wayland/Qt/Vulkan утилиты
WAYLAND_QT=(
qt5-wayland
qt6-wayland
wayland-utils
vulkan-tools
)
# Аудиоподсистема (PipeWire)
AUDIO_PACKAGES=(
pipewire
wireplumber
)
# Сеть и печать (Avahi, CUPS, fwupd, etc.)
NETWORK_PRINT_PACKAGES=(
avahi-daemon
cups-browsed
fwupd
libnss-mdns
wsdd
)
apt-get install -y \
"${BASIC_PACKAGES[@]}" \
"${ZRAM_PACKAGES[@]}" \
"${SWAY_SESSION_PACKAGES[@]}" \
"${GNOME_THEMES[@]}" \
"${MISC_APPS[@]}" \
"${DRIVERS[@]}" \
"${WAYLAND_QT[@]}" \
"${AUDIO_PACKAGES[@]}" \
"${GAMING_PACKAGES[@]}" \
"${NETWORK_PRINT_PACKAGES[@]}"
echo "::endgroup::"

7
src/packages/03-apt-ending.sh Executable file
View File

@ -0,0 +1,7 @@
#!/bin/bash
echo "::group:: ===$(basename "$0")==="
apt-get autoremove -y && apt-get clean && rm -rf /var/lib/apt/lists/* && mkdir /var/lib/apt/lists/partial
echo "::endgroup::"

View File

@ -0,0 +1,96 @@
# /etc/bashrc
# System wide functions and aliases
# Environment stuff goes in /etc/profile
# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.
# Prevent doublesourcing
if [ -z "$BASHRCSOURCED" ]; then
BASHRCSOURCED="Y"
# are we an interactive shell?
if [ "$PS1" ]; then
if [ -z "$PROMPT_COMMAND" ]; then
declare -a PROMPT_COMMAND
case $TERM in
xterm*)
if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
else
PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"'
fi
;;
screen*)
if [ -e /etc/sysconfig/bash-prompt-screen ]; then
PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
else
PROMPT_COMMAND='printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"'
fi
;;
*)
[ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=/etc/sysconfig/bash-prompt-default
;;
esac
fi
# Turn on parallel history
shopt -s histappend
# Turn on checkwinsize
shopt -s checkwinsize
# Change the default prompt string
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
# You might want to have e.g. tty in prompt (e.g. more virtual machines)
# and console windows
# If you want to do so, just add e.g.
# if [ "$PS1" ]; then
# PS1="[\u@\h:\l \W]\\$ "
# fi
# to your custom modification shell script in /etc/profile.d/ directory
fi
if ! shopt -q login_shell ; then # We're not a login shell
# Need to redefine pathmunge, it gets undefined at the end of /etc/profile
pathmunge () {
case ":${PATH}:" in
*:"$1":*)
;;
*)
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
esac
}
# Set default umask for non-login shell only if it is set to 0
[ `umask` -eq 0 ] && umask 022
SHELL=/bin/bash
# Only display echos from profile.d scripts if we are no login shell
# and interactive - otherwise just process them to set envvars
for i in /etc/profile.d/*.sh; do
if [ -r "$i" ]; then
if [ "$PS1" ]; then
. "$i"
else
. "$i" >/dev/null
fi
fi
done
unset i
unset -f pathmunge
fi
fi
# vim:ts=4:sw=4
export STARSHIP_CONFIG=/etc/starship/starship.toml
# Starship
if type "starship" > /dev/null; then
eval "$(starship init bash)"
fi

View File

@ -0,0 +1,45 @@
[org/gnome/desktop/default-applications/terminal]
exec='ptyxis'
[org/gnome/shell]
favorite-apps=['org.gnome.TextEditor.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Ptyxis.desktop', 'org.gnome.Software.desktop', 'org.telegram.desktop']
enabled-extensions=['appindicatorsupport@rgcjonas.gmail.com', 'dash-to-dock@micxgx.gmail.com', 'blur-my-shell@aunetx']
[org/gnome/desktop/background]
picture-uri='file:///usr/share/backgrounds/gnome/amber-l.jxl'
picture-uri-dark='file:///usr/share/backgrounds/gnome/amber-d.jxl'
[org/gnome/software]
download-updates=false
allow-updates=false
allow-system-install=false
[org/gnome/desktop/input-sources]
sources=[('xkb', 'us'), ('xkb', 'ru')]
[org/gnome/desktop/interface]
gtk-theme='Adwaita-dark'
color-scheme='prefer-dark'
font-name='JetBrains Mono 11'
document-font-name='JetBrains Mono 11'
monospace-font-name='FiraCode Nerd Font 12'
font-antialiasing='grayscale'
font-hinting='full'
[org/gnome/desktop/wm/preferences]
button-layout=':minimize,maximize,close'
[org/gnome/shell/extensions/dash-to-dock]
apply-custom-theme=true
[org/gnome/Ptyxis]
default-profile-uuid='f91d440d07cd15857f91abf0677f7d3c'
profile-uuids=['f91d440d07cd15857f91abf0677f7d3c']
[org/gnome/Ptyxis/Profiles/f91d440d07cd15857f91abf0677f7d3c]
custom-command='/bin/zsh'
login-shell=false
use-custom-command=true
[org/gnome/mutter]
center-new-windows=true

View File

@ -0,0 +1,3 @@
export PATH=$PATH:${HOME}/.bin
export PATH=$HOME/bin:/usr/local/bin:$PATH
export PATH=$HOME/.local/bin:$PATH

View File

@ -0,0 +1,3 @@
alias ll='ls -la'
alias ..='cd ..'
alias neofetch=fastfetch

View File

@ -0,0 +1,148 @@
# see /usr/share/doc/bash-color-prompt/README.md
## to truncate \w dirpath set:
# PROMPT_DIRTRIM=3
# only for bash
if [ -n "${BASH_VERSION}" -a -z "${bash_prompt_color_disable}" ]; then
# enable only in interactive shell
case $- in
*i*) ;;
*) return;;
esac
# defines PS1 for color prompt
prompt_setup_color_ps1() {
local colorpre='\[\e['
local colorsuf='m\]'
local colorreset="${colorpre}0${colorsuf}"
PS1='${PROMPT_START@P}'"${colorpre}"'${PROMPT_COLOR}${PROMPT_HIGHLIGHT:+;$PROMPT_HIGHLIGHT}'"${colorsuf}"'${PROMPT_USERHOST@P}'"${colorreset}"'${PROMPT_SEPARATOR@P}'"${colorpre}"'${PROMPT_DIR_COLOR-${PROMPT_COLOR}}${PROMPT_HIGHLIGHT:+;$PROMPT_HIGHLIGHT}'"${colorsuf}"'${PROMPT_DIRECTORY@P}'"${colorreset}"'${PROMPT_END@P}\$'"${colorreset} "
}
# sets default color or $1 can override
prompt_color() {
if [ -n "${1:+1}" ]; then
PROMPT_COLOR="$1"
else
if [ "$USER" = "root" ]; then
PROMPT_COLOR=35
else
PROMPT_COLOR=32
fi
fi
}
# sets prompt highlighting
prompt_highlight() {
PROMPT_HIGHLIGHT=${1:-1}
}
prompt_default_highlight() {
if [ "$DESKTOP_SESSION" = "gnome" ]; then
prompt_highlight "${1:-1}"
else
unset PROMPT_HIGHLIGHT
fi
}
prompt_default_color() {
prompt_color "$1"
prompt_default_highlight
unset PROMPT_DIR_COLOR
}
prompt_dir_color() {
if [ -n "${1:+1}" ]; then
PROMPT_DIR_COLOR="$1"
else
unset PROMPT_DIR_COLOR
fi
}
# only activate for color terminals and if PS1 unchanged from bash or fedora defaults
if [ '(' "$PS1" = "[\u@\h \W]\\$ " -o "$PS1" = "\\s-\\v\\\$ " ')' \
-a '(' "${TERM: -5}" = "color" -o "${TERM}" = "linux" ')' \
-o -n "${bash_prompt_color_force}" ]; then
prompt_color "$PROMPT_COLOR"
prompt_default_highlight "$PROMPT_HIGHLIGHT"
prompt_dir_color "$PROMPT_DIR_COLOR"
PROMPT_USERHOST="${PROMPT_USERHOST-${container:+⬢ }\u@\h}"
PROMPT_SEPARATOR="${PROMPT_SEPARATOR-:}"
PROMPT_DIRECTORY="${PROMPT_DIRECTORY-\w}"
prompt_setup_color_ps1
fi
# sets default prompt format
prompt_default_format() {
PROMPT_USERHOST='\u@\h'
PROMPT_SEPARATOR=':'
PROMPT_DIRECTORY='\w'
PROMPT_START=''
PROMPT_END=''
}
# sets default prompt color and format
prompt_default() {
prompt_default_color "$1"
prompt_default_format
}
# sets color to OS ANSI_COLOR
# $1 is appended to the (foreground) color
prompt_os_color() {
if [ -z "$ANSI_COLOR" ]; then
eval local $(grep ANSI_COLOR /etc/os-release)
fi
PROMPT_COLOR="$ANSI_COLOR${1:+;$1}"
}
prompt_container() {
if [ -n "$container" ]; then
eval local $(grep "\(^ID=\|VERSION_ID\|VARIANT_ID\)" /etc/os-release)
PROMPT_USERHOST="$ID-$VARIANT_ID$VERSION_ID"
else
if [ "$HOSTNAME" = "fedora" -a "$1" = "$USER" ]; then
unset PROMPT_USERHOST
fi
fi
}
# unsets colors
prompt_no_color() {
unset PROMPT_COLOR
unset PROMPT_DIR_COLOR
}
# unsets highlighting
prompt_no_highlight() {
unset PROMPT_HIGHLIGHT
}
# unsets color and highlighting
prompt_plain() {
prompt_no_color
prompt_no_highlight
}
# sets traditional Red Hat prompt style format
prompt_traditional_format() {
PROMPT_USERHOST='\u@\h'
PROMPT_SEPARATOR=' '
PROMPT_DIRECTORY='\W'
PROMPT_START='['
PROMPT_END=']'
}
# sets traditional Red Hat prompt style without color
prompt_traditional() {
prompt_plain
prompt_traditional_format
}
# revert to traditional Red Hat prompt
prompt_reset_traditional_ps1() {
PS1="[\u@\h \W]\\$ "
}
fi

View File

@ -0,0 +1,16 @@
# shellcheck shell=sh disable=SC1091,SC2166,SC2268,SC3028,SC3044,SC3054
# Check for interactive bash and that we haven't already been sourced.
if [ "x${BASH_VERSION-}" != x -a "x${PS1-}" != x -a "x${BASH_COMPLETION_VERSINFO-}" = x ]; then
# Check for recent enough version of bash.
if [ "${BASH_VERSINFO[0]}" -gt 4 ] ||
[ "${BASH_VERSINFO[0]}" -eq 4 -a "${BASH_VERSINFO[1]}" -ge 2 ]; then
[ -r "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion" ] &&
. "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion"
if shopt -q progcomp && [ -r /usr/share/bash-completion/bash_completion ]; then
# Source completion code.
. /usr/share/bash-completion/bash_completion
fi
fi
fi

View File

@ -0,0 +1,25 @@
#!/bin/sh
# shellcheck shell=sh disable=SC1091,SC2039,SC2166
# Check for interactive bash and that we haven't already been sourced.
if [ "x${BASH_VERSION-}" != x -a "x${PS1-}" != x -a "x${BREW_BASH_COMPLETION-}" = x ]; then
# Check for recent enough version of bash.
if [ "${BASH_VERSINFO[0]}" -gt 4 ] ||
[ "${BASH_VERSINFO[0]}" -eq 4 -a "${BASH_VERSINFO[1]}" -ge 2 ]; then
if [ -w /home/linuxbrew/.linuxbrew ]; then
if ! test -L /home/linuxbrew/.linuxbrew/etc/bash_completion.d/brew; then
/home/linuxbrew/.linuxbrew/bin/brew completions link > /dev/null
fi
fi
if test -d /home/linuxbrew/.linuxbrew/etc/bash_completion.d; then
for rc in /home/linuxbrew/.linuxbrew/etc/bash_completion.d/*; do
if test -r "$rc"; then
. "$rc"
fi
done
unset rc
fi
fi
BREW_BASH_COMPLETION=1
export BREW_BASH_COMPLETION
fi

View File

@ -0,0 +1,2 @@
#!/usr/bin/env bash
[[ -d /home/linuxbrew/.linuxbrew && $- == *i* ]] && eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"

View File

@ -0,0 +1,3 @@
#!/bin/sh
alias neofetch=fastfetch

View File

@ -0,0 +1,23 @@
# ~/.bashrc
# The individual per-interactive-shell startup file.
# Source global definitions.
if [ -r /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific environment
if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]; then
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
fi
export PATH
# User specific aliases and functions
if [ -d ~/.bashrc.d ]; then
for rc in ~/.bashrc.d/*; do
if [ -f "$rc" ]; then
. "$rc"
fi
done
fi
unset rc

View File

@ -0,0 +1,43 @@
typeset -g -A key
key[Home]="${terminfo[khome]}"
key[End]="${terminfo[kend]}"
key[Insert]="${terminfo[kich1]}"
key[Backspace]="${terminfo[kbs]}"
key[Delete]="${terminfo[kdch1]}"
key[Up]="${terminfo[kcuu1]}"
key[Down]="${terminfo[kcud1]}"
key[Left]="${terminfo[kcub1]}"
key[Right]="${terminfo[kcuf1]}"
key[PageUp]="${terminfo[kpp]}"
key[PageDown]="${terminfo[knp]}"
key[Shift-Tab]="${terminfo[kcbt]}"
key[Control-Left]="${terminfo[kLFT5]}"
key[Control-Right]="${terminfo[kRIT5]}"
[[ -n "${key[Home]}" ]] && bindkey -- "${key[Home]}" beginning-of-line
[[ -n "${key[End]}" ]] && bindkey -- "${key[End]}" end-of-line
[[ -n "${key[Insert]}" ]] && bindkey -- "${key[Insert]}" overwrite-mode
[[ -n "${key[Backspace]}" ]] && bindkey -- "${key[Backspace]}" backward-delete-char
[[ -n "${key[Delete]}" ]] && bindkey -- "${key[Delete]}" delete-char
[[ -n "${key[Up]}" ]] && bindkey -- "${key[Up]}" up-line-or-history
[[ -n "${key[Down]}" ]] && bindkey -- "${key[Down]}" down-line-or-history
[[ -n "${key[Left]}" ]] && bindkey -- "${key[Left]}" backward-char
[[ -n "${key[Right]}" ]] && bindkey -- "${key[Right]}" forward-char
[[ -n "${key[PageUp]}" ]] && bindkey -- "${key[PageUp]}" beginning-of-buffer-or-history
[[ -n "${key[PageDown]}" ]] && bindkey -- "${key[PageDown]}" end-of-buffer-or-history
[[ -n "${key[Shift-Tab]}" ]] && bindkey -- "${key[Shift-Tab]}" reverse-menu-complete
[[ -n "${key[Control-Left]}" ]] && bindkey -- "${key[Control-Left]}" backward-word
[[ -n "${key[Control-Right]}" ]] && bindkey -- "${key[Control-Right]}" forward-word
if (( ${+terminfo[smkx]} && ${+terminfo[rmkx]} )); then
autoload -Uz add-zle-hook-widget up-line-or-beginning-search down-line-or-beginning-search
function zle_application_mode_start { echoti smkx }
function zle_application_mode_stop { echoti rmkx }
add-zle-hook-widget -Uz zle-line-init zle_application_mode_start
zle -N up-line-or-beginning-search
zle -N down-line-or-beginning-search
[[ -n "${key[Up]}" ]] && bindkey -- "${key[Up]}" up-line-or-beginning-search
[[ -n "${key[Down]}" ]] && bindkey -- "${key[Down]}" down-line-or-beginning-search
fi

View File

@ -0,0 +1,8 @@
if [ -n "$DISTROBOX_ENTER_PATH" ]; then
echo "Switching to bash inside Distrobox..."
exec /bin/bash
exit 0
fi
# zsh-autosuggestions
source /usr/local/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh

View File

@ -0,0 +1,170 @@
[aws]
symbol = " "
[buf]
symbol = " "
[c]
symbol = " "
[conda]
symbol = " "
[crystal]
symbol = " "
[dart]
symbol = " "
[directory]
read_only = " 󰌾"
[docker_context]
symbol = " "
[elixir]
symbol = " "
[elm]
symbol = " "
[fennel]
symbol = " "
[fossil_branch]
symbol = " "
[git_branch]
symbol = " "
[git_commit]
tag_symbol = '  '
[golang]
symbol = " "
[guix_shell]
symbol = " "
[haskell]
symbol = " "
[haxe]
symbol = " "
[hg_branch]
symbol = " "
[hostname]
ssh_symbol = " "
[java]
symbol = " "
[julia]
symbol = " "
[kotlin]
symbol = " "
[lua]
symbol = " "
[memory_usage]
symbol = "󰍛 "
[meson]
symbol = "󰔷 "
[nim]
symbol = "󰆥 "
[nix_shell]
symbol = " "
[nodejs]
symbol = " "
[ocaml]
symbol = " "
[os.symbols]
Alpaquita = " "
Alpine = " "
AlmaLinux = " "
Amazon = " "
Android = " "
Arch = " "
Artix = " "
CentOS = " "
Debian = " "
DragonFly = " "
Emscripten = " "
EndeavourOS = " "
Fedora = " "
FreeBSD = " "
Garuda = "󰛓 "
Gentoo = " "
HardenedBSD = "󰞌 "
Illumos = "󰈸 "
Kali = " "
Linux = " "
Mabox = " "
Macos = " "
Manjaro = " "
Mariner = " "
MidnightBSD = " "
Mint = " "
NetBSD = " "
NixOS = " "
OpenBSD = "󰈺 "
openSUSE = " "
OracleLinux = "󰌷 "
Pop = " "
Raspbian = " "
Redhat = " "
RedHatEnterprise = " "
RockyLinux = " "
Redox = "󰀘 "
Solus = "󰠳 "
SUSE = " "
Ubuntu = " "
Unknown = " "
Void = " "
Windows = "󰍲 "
[package]
symbol = "󰏗 "
[perl]
symbol = " "
[php]
symbol = " "
[pijul_channel]
symbol = " "
[python]
symbol = " "
[rlang]
symbol = "󰟔 "
[ruby]
symbol = " "
[rust]
symbol = "󱘗 "
[scala]
symbol = " "
[swift]
symbol = " "
[zig]
symbol = " "
[gradle]
symbol = " "

View File

@ -0,0 +1,2 @@
[zram0]
zram-size = max(min(ram / 2, 8192), 2048)

View File

@ -0,0 +1,15 @@
# Load essential files:
emulate sh
[ -f /etc/profile ] && . /etc/profile
[ -f "$HOME"/.profile ] && . "$HOME"/.profile
emulate zsh
# eliminates duplicates in *paths
typeset -gU cdpath fpath path
# Zsh search path for executable
path=(
/usr/local/{bin,sbin}
$path
)

View File

@ -0,0 +1,21 @@
#!/usr/bin/env zsh
# vim:syntax=zsh
# vim:filetype=zsh
# Secure TMPDIR and set TMPPREFIX according to TMPDIR.
[ -f /etc/profile.d/tmpdir.sh ] && . /etc/profile.d/tmpdir.sh &&
TMPPREFIX="${TMPDIR:-/tmp}/zsh"
# https://blog.patshead.com/2011/04/improve-your-oh-my-zsh-startup-time-maybe.html
skip_global_compinit=1
export SYSTEM=$(uname -s)
# https://github.com/sorin-ionescu/prezto/blob/master/runcoms/zshenv
# Ensure that a non-login, non-interactive shell has a defined environment.
if [[ ("$SHLVL" -eq 1 && ! -o LOGIN) && -s "${ZDOTDIR:-$HOME}/.zprofile" ]]; then
source "${ZDOTDIR:-$HOME}/.zprofile"
fi
export PATH=$PATH:${HOME}/.bin
export PATH=$HOME/bin:/usr/local/bin:$PATH

View File

@ -0,0 +1,253 @@
#!/usr/bin/env zsh
# vim:syntax=zsh
# vim:filetype=zsh
#
# .zshrc is sourced in interactive shells.
# It should contain commands to set up aliases,
# functions, options, key bindings, etc.
#
# history options
HISTFILE="${ZDOTDIR:-$HOME}/.zsh_history"
HISTSIZE=11111
SAVEHIST=9999
#
# Completions
#
# zsh-completions
fpath=(/usr/share/zsh/site-functions $fpath)
# load brew autocomplete
if [ -d "/home/linuxbrew/.linuxbrew/share/zsh/site-functions" ]; then
fpath+=(/home/linuxbrew/.linuxbrew/share/zsh/site-functions)
fi
#
# Cache setup
#
zcompdump_file="${ZDOTDIR:-$HOME}/.zcompdump"
# Cache: if the cache file exists and is less than a day old, we use it
if [[ -f $zcompdump_file && $(( $(date +%s) - $(stat -c %Y $zcompdump_file) )) -lt 86400 ]]; then
autoload -Uz compinit && compinit -C -d "$zcompdump_file"
else
autoload -Uz compinit && compinit -d "$zcompdump_file"
fi
#
# Options
#
setopt INC_APPEND_HISTORY # To save every command before it is executed
setopt SHARE_HISTORY # Share history between all sessions.
setopt APPEND_HISTORY # Append history to the history file.
setopt COMPLETE_IN_WORD # Complete from both ends of a word.
setopt ALWAYS_TO_END # Move cursor to the end of a completed word.
setopt PATH_DIRS # Perform path search even on command names with slashes.
setopt AUTO_MENU # Show completion menu on a successive tab press.
setopt AUTO_LIST # Automatically list choices on ambiguous completion.
setopt AUTO_PARAM_SLASH # If completed parameter is a directory, add a trailing slash.
setopt EXTENDED_GLOB # Needed for file modification glob modifiers with compinit.
unsetopt MENU_COMPLETE # Do not autoselect the first completion entry.
unsetopt FLOW_CONTROL # Disable start/stop characters in shell editor.
setopt interactivecomments # Allow inline comments
setopt AUTO_CD # Auto changes to a directory without typing cd.
#
# Variables
#
export ZSHCONFIG=${ZDOTDIR:-$HOME}/.zsh
ZSH_THEME="spaceship"
# Standard style used by default for 'list-colors'
LS_COLORS=${LS_COLORS:-'di=34:ln=35:so=32:pi=33:ex=31:bd=36;01:cd=33;01:su=31;40;07:sg=36;40;07:tw=32;40;07:ow=33;40;07:'}
#
# Styles
#
# Defaults.
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*:default' list-prompt '%S%M matches%s'
# Use caching to make completion for commands such as dpkg and apt usable.
zstyle ':completion::complete:*' use-cache on
zstyle ':completion::complete:*' cache-path "${XDG_CACHE_HOME:-$HOME/.cache}/prezto/zcompcache"
# Case-insensitive (all), partial-word, and then substring completion.
if zstyle -t ':prezto:module:completion:*' case-sensitive; then
zstyle ':completion:*' matcher-list 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
setopt CASE_GLOB
else
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
unsetopt CASE_GLOB
fi
# Group matches and describe.
zstyle ':completion:*:*:*:*:*' menu select
zstyle ':completion:*:matches' group 'yes'
zstyle ':completion:*:options' description 'yes'
zstyle ':completion:*:options' auto-description '%d'
zstyle ':completion:*:corrections' format ' %F{green}-- %d (errors: %e) --%f'
zstyle ':completion:*:descriptions' format ' %F{yellow}-- %d --%f'
zstyle ':completion:*:messages' format ' %F{purple} -- %d --%f'
zstyle ':completion:*:warnings' format ' %F{red}-- no matches found --%f'
zstyle ':completion:*' format ' %F{yellow}-- %d --%f'
zstyle ':completion:*' group-name ''
zstyle ':completion:*' verbose yes
# Fuzzy match mistyped completions.
zstyle ':completion:*' completer _complete _match _approximate
zstyle ':completion:*:match:*' original only
zstyle ':completion:*:approximate:*' max-errors 1 numeric
# Increase the number of errors based on the length of the typed word. But make
# sure to cap (at 7) the max-errors to avoid hanging.
zstyle -e ':completion:*:approximate:*' max-errors 'reply=($((($#PREFIX+$#SUFFIX)/3>7?7:($#PREFIX+$#SUFFIX)/3))numeric)'
# Don't complete unavailable commands.
zstyle ':completion:*:functions' ignored-patterns '(_*|pre(cmd|exec))'
# Array completion element sorting.
zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters
# Directories
zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories
zstyle ':completion:*:*:cd:*:directory-stack' menu yes select
zstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'users' 'expand'
zstyle ':completion:*' squeeze-slashes true
# History
zstyle ':completion:*:history-words' stop yes
zstyle ':completion:*:history-words' remove-all-dups yes
zstyle ':completion:*:history-words' list false
zstyle ':completion:*:history-words' menu yes
# Environment Variables
zstyle ':completion::*:(-command-|export):*' fake-parameters ${${${_comps[(I)-value-*]#*,}%%,*}:#-*-}
# Populate hostname completion. But allow ignoring custom entries from static
# */etc/hosts* which might be uninteresting.
zstyle -a ':prezto:module:completion:*:hosts' etc-host-ignores '_etc_host_ignores'
zstyle -e ':completion:*:hosts' hosts 'reply=(
${=${=${=${${(f)"$(cat {/etc/ssh/ssh_,~/.ssh/}known_hosts(|2)(N) 2> /dev/null)"}%%[#| ]*}//\]:[0-9]*/ }//,/ }//\[/ }
${=${(f)"$(cat /etc/hosts(|)(N) <<(ypcat hosts 2> /dev/null))"}%%(\#${_etc_host_ignores:+|${(j:|:)~_etc_host_ignores}})*}
${=${${${${(@M)${(f)"$(cat ~/.ssh/config 2> /dev/null)"}:#Host *}#Host }:#*\**}:#*\?*}}
)'
# Don't complete uninteresting users...
zstyle ':completion:*:*:*:users' ignored-patterns \
adm amanda apache avahi beaglidx bin cacti canna clamav daemon \
dbus distcache dovecot fax ftp games gdm gkrellmd gopher \
hacluster haldaemon halt hsqldb ident junkbust ldap lp mail \
mailman mailnull mldonkey mysql nagios \
named netdump news nfsnobody nobody nscd ntp nut nx openvpn \
operator pcap postfix postgres privoxy pulse pvm quagga radvd \
rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs '_*'
# Ignore multiple entries.
zstyle ':completion:*:(rm|kill|diff):*' ignore-line other
zstyle ':completion:*:rm:*' file-patterns '*:all-files'
# Kill
zstyle ':completion:*:*:*:*:processes' command 'ps -u $LOGNAME -o pid,user,command -w'
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;36=0=01'
zstyle ':completion:*:*:kill:*' menu yes select
zstyle ':completion:*:*:kill:*' force-list always
zstyle ':completion:*:*:kill:*' insert-ids single
# Man
zstyle ':completion:*:manuals' separate-sections true
zstyle ':completion:*:manuals.(^1*)' insert-sections true
# Media Players
zstyle ':completion:*:*:mpg123:*' file-patterns '*.(mp3|MP3):mp3\ files *(-/):directories'
zstyle ':completion:*:*:mpg321:*' file-patterns '*.(mp3|MP3):mp3\ files *(-/):directories'
zstyle ':completion:*:*:ogg123:*' file-patterns '*.(ogg|OGG|flac):ogg\ files *(-/):directories'
zstyle ':completion:*:*:mocp:*' file-patterns '*.(wav|WAV|mp3|MP3|ogg|OGG|flac):ogg\ files *(-/):directories'
# Mutt
if [[ -s "$HOME/.mutt/aliases" ]]; then
zstyle ':completion:*:*:mutt:*' menu yes select
zstyle ':completion:*:mutt:*' users ${${${(f)"$(<"$HOME/.mutt/aliases")"}#alias[[:space:]]}%%[[:space:]]*}
fi
# SSH/SCP/RSYNC
zstyle ':completion:*:(ssh|scp|rsync):*' tag-order 'hosts:-host:host hosts:-domain:domain hosts:-ipaddr:ip\ address *'
zstyle ':completion:*:(scp|rsync):*' group-order users files all-files hosts-domain hosts-host hosts-ipaddr
zstyle ':completion:*:ssh:*' group-order users hosts-domain hosts-host users hosts-ipaddr
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-host' ignored-patterns '*(.|:)*' loopback ip6-loopback localhost ip6-localhost broadcasthost
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-domain' ignored-patterns '<->.<->.<->.<->' '^[-[:alnum:]]##(.[-[:alnum:]]##)##' '*@*'
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-ipaddr' ignored-patterns '^(<->.<->.<->.<->|(|::)([[:xdigit:].]##:(#c,2))##(|%*))' '127.0.0.<->' '255.255.255.255' '::1' 'fe80::*'
autoload -U colors
colors
# Brew
if [[ -o interactive ]] && [[ -d /home/linuxbrew/.linuxbrew ]]; then
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
if type brew &>/dev/null; then
if [[ -w /home/linuxbrew/.linuxbrew ]]; then
if [[ ! -L "$(brew --prefix)/share/zsh/site-functions/_brew" ]]; then
brew completions link
fi
fi
fi
fi
#####################
# User configuration
#####################
# Load user zsh scripts
if [ -d $ZSHCONFIG ]; then
for f in $ZSHCONFIG/**/*.*sh
do
source "$f"
done
fi
# Provide pathmunge for /etc/profile.d scripts
pathmunge()
{
if ! echo $PATH | /bin/grep -qE "(^|:)$1($|:)" ; then
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
fi
}
_src_etc_profile_d()
{
# Make the *.sh things happier, and have possible ~/.zshenv options like
# NOMATCH ignored.
emulate -L ksh
# from bashrc, with zsh fixes
if [[ ! -o login ]]; then # We're not a login shell
for i in /etc/profile.d/*.sh; do
if [ -r "$i" ]; then
. $i
fi
done
unset i
fi
}
_src_etc_profile_d
unset -f pathmunge _src_etc_profile_d
export STARSHIP_CONFIG=/etc/starship/starship.toml
# Starship
if type "starship" > /dev/null; then
eval "$(starship init zsh)"
fi

View File

@ -0,0 +1,93 @@
Copyright (c) 2014, The Fira Code Project Authors (https://github.com/tonsky/FiraCode)
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View File

@ -0,0 +1,48 @@
# Nerd Fonts
This is an archived font from the Nerd Fonts release v3.3.0.
For more information see:
* https://github.com/ryanoasis/nerd-fonts/
* https://github.com/ryanoasis/nerd-fonts/releases/latest/
# Fira Code
**Fira Code** is a free monospaced font with programming ligatures.
For more information have a look at the upstream website: https://github.com/tonsky/FiraCode
Version: 6.2
## Which font?
### TL;DR
* Pick your font family:
* If you are limited to monospaced fonts (because of your terminal, etc) then pick a font with `Nerd Font Mono` (or `NFM`).
* If you want to have bigger icons (usually around 1.5 normal letters wide) pick a font without `Mono` i.e. `Nerd Font` (or `NF`). Most terminals support this, but ymmv.
* If you work in a proportional context (GUI elements or edit a presentation etc) pick a font with `Nerd Font Propo` (or `NFP`).
### Ligatures
Ligatures are generally preserved in the patched fonts.
Nerd Fonts `v2.0.0` had no ligatures in the `Nerd Font Mono` fonts, this has been dropped with `v2.1.0`.
If you have a ligature-aware terminal and don't want ligatures you can (usually) disable them in the terminal settings.
### Explanation
Once you narrow down your font choice of family (`Droid Sans`, `Inconsolata`, etc) and style (`bold`, `italic`, etc) you have 2 main choices:
#### `Option 1: Download already patched font`
* For a stable version download a font package from the [release page](https://github.com/ryanoasis/nerd-fonts/releases)
* Or download the development version from the folders here
#### `Option 2: Patch your own font`
* Patch your own variations with the various options provided by the font patcher (i.e. not include all symbols for smaller font size)
For more information see: [The FAQ](https://github.com/ryanoasis/nerd-fonts/wiki/FAQ-and-Troubleshooting#which-font)
[SIL-RFN]:http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web_fonts_and_RFNs#14cbfd4a

View File

@ -0,0 +1,10 @@
# This is the official list of project authors for copyright purposes.
# This file is distinct from the CONTRIBUTORS.txt file.
# See the latter for an explanation.
#
# Names should be added to this file as:
# Name or Organization <email address>
JetBrains <>
Philipp Nurullin <philipp.nurullin@jetbrains.com>
Konstantin Bulenkov <kb@jetbrains.com>

View File

@ -0,0 +1,93 @@
Copyright 2020 The JetBrains Mono Project Authors (https://github.com/JetBrains/JetBrainsMono)
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
https://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View File

@ -0,0 +1 @@
© 2015-2017 Apple Inc. All rights reserved.

Some files were not shown because too many files have changed in this diff Show More