diff --git a/.dotter/global.toml b/.dotter/global.toml new file mode 100644 index 0000000..8f69cee --- /dev/null +++ b/.dotter/global.toml @@ -0,0 +1,48 @@ +[helpers] + +[default] +depends = [] + +[manjaro.files] +manjaro = "~" + +[mc.files] +mc = "~/.config/mc" + +[vim.files] +# type symbolic prevents interpreting '{{' as template +"vim/.vimrc" = { target = "~/.vimrc", type = "symbolic" } + +[nvim.files] +"vim/init.vim" = { target = "~/.config/nvim/init.vim", type = "symbolic" } + +[i3.files] +"i3/dunst" = "~/.config/dunst" +"i3/i3" = "~/.config/i3" +"i3/i3blocks" = { target = "~/.config/i3blocks", type = "symbolic" } +"i3/rofi" = "~/.config/rofi" +"i3/i3-scrot.conf" = "~/.config/i3-scrot.conf" + +[emacs.files] +"emacs/doom" = "~/.config/doom" +"emacs/spacemacs/.spacemacs" = "~/.spacemacs" +"emacs/chemacs/.emacs-profiles.el" = "~/.emacs-profiles.el" + +[alacritty.files] +alacritty = "~/.config/alacritty" + +[starship.files] +starship = "~/.config/" + +[zsh.files] +"zsh/.zshrc" = "~/.zshrc" +"zsh/custom-plugins" = "~/.oh-my-zsh/custom" + +[polybar.files] +polybar = "~/.config/polybar" + +[leftwm.files] +leftwm = "~/.config/leftwm" + +[xmonad.files] +xmonad = "~/.xmonad" diff --git a/.dotter/local.toml b/.dotter/local.toml new file mode 100644 index 0000000..c79d861 --- /dev/null +++ b/.dotter/local.toml @@ -0,0 +1,2 @@ +# includes = [] +packages = ["mc", "nvim", "emacs", "i3", "alacritty", "starship", "zsh", "polybar"] diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a9117be --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.dotter/cache.toml +.dotter/cache diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..9caf8c4 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "current"] + path = leftwm/themes/current + url = https://github.com/lex148/forest diff --git a/README.md b/README.md index 64df3ea..7d03ac5 100644 --- a/README.md +++ b/README.md @@ -9,3 +9,9 @@ All neccessary dependencies I could think of are listed in the *dependencies* fi cd .dotfiles stow i3 mc emacs vim ``` + +## Alternative with [dotter](https://github.com/SuperCuber/dotter): +``` sh +cd .dotfiles +dotter deploy +``` diff --git a/alacritty/alacritty.yml b/alacritty/alacritty.yml new file mode 100644 index 0000000..dfb4221 --- /dev/null +++ b/alacritty/alacritty.yml @@ -0,0 +1,862 @@ +# Configuration for Alacritty, the GPU enhanced terminal emulator. + +items: + - colors: + name: 3024 (dark) + author: Chris Kempson + primary: + background: "#090300" + foreground: "#a5a2a2" + cursor: + text: "#090300" + cursor: "#a5a2a2" + normal: + black: "#090300" + red: "#db2d20" + green: "#01a252" + yellow: "#fded02" + blue: "#01a0e4" + magenta: "#a16a94" + cyan: "#b5e4f4" + white: "#a5a2a2" + bright: + black: "#5c5855" + red: "#db2d20" + green: "#01a252" + yellow: "#fded02" + blue: "#01a0e4" + magenta: "#a16a94" + cyan: "#b5e4f4" + white: "#f7f7f7" + - theme: 3024.dark +colors: + name: vscode (dark) + author: senpai-10 + primary: + background: "#1E1E1E" + foreground: "#D4D4D4" + cursor: + text: "#1d1f21" + cursor: "#cccccc" + normal: + black: "#000000" + red: "#cd3131" + green: "#0dbc79" + yellow: "#e5e510" + blue: "#2472c8" + magenta: "#bc3fbc" + cyan: "#11a8cd" + white: "#e5e5e5" + bright: + black: "#666666" + red: "#f14c4c" + green: "#23d18b" + yellow: "#f5f543" + blue: "#3b8eea" + magenta: "#d670d6" + cyan: "#29b8db" + white: "#e5e5e5" +theme: vscode.dark + +# Import additional configuration files +# +# Imports are loaded in order, skipping all missing files, with the importing +# file being loaded last. If a field is already present in a previous import, it +# will be replaced. +# +# All imports must either be absolute paths starting with `/`, or paths relative +# to the user's home directory starting with `~/`. +#import: +# - /path/to/alacritty.yml +# Any items in the `env` entry below will be added as +# environment variables. Some entries may override variables +# set by alacritty itself. +#env: +# TERM variable +# +# This value is used to set the `$TERM` environment variable for +# each instance of Alacritty. If it is not present, alacritty will +# check the local terminfo database and use `alacritty` if it is +# available, otherwise `xterm-256color` is used. +#TERM: alacritty +#window: +# Window dimensions (changes require restart) +# +# Number of lines/columns (not pixels) in the terminal. The number of columns +# must be at least `2`, while using a value of `0` for columns and lines will +# fall back to the window manager's recommended size. +#dimensions: +# columns: 0 +# lines: 0 +# Window position (changes require restart) +# +# Specified in number of pixels. +# If the position is not set, the window manager will handle the placement. +#position: +# x: 0 +# y: 0 +# Window padding (changes require restart) +# +# Blank space added around the window in pixels. This padding is scaled +# by DPI and the specified value is always added at both opposing sides. +#padding: +# x: 0 +# y: 0 +# Spread additional padding evenly around the terminal content. +#dynamic_padding: false +# Window decorations +# +# Values for `decorations`: +# - full: Borders and title bar +# - none: Neither borders nor title bar +# +# Values for `decorations` (macOS only): +# - transparent: Title bar, transparent background and title bar buttons +# - buttonless: Title bar, transparent background and no title bar buttons +#decorations: full +# Background opacity +# +# Window opacity as a floating point number from `0.0` to `1.0`. +# The value `0.0` is completely transparent and `1.0` is opaque. +#opacity: 1.0 +# Startup Mode (changes require restart) +# +# Values for `startup_mode`: +# - Windowed +# - Maximized +# - Fullscreen +# +# Values for `startup_mode` (macOS only): +# - SimpleFullscreen +#startup_mode: Windowed +# Window title +#title: Alacritty +# Allow terminal applications to change Alacritty's window title. +#dynamic_title: true +# Window class (Linux/BSD only): +#class: +# Application instance name +#instance: Alacritty +# General application class +#general: Alacritty +# GTK theme variant (Linux/BSD only) +# +# Override the variant of the GTK theme. Commonly supported values are `dark` +# and `light`. Set this to `None` to use the default theme variant. +#gtk_theme_variant: None +#scrolling: +# Maximum number of lines in the scrollback buffer. +# Specifying '0' will disable scrolling. +#history: 10000 +# Scrolling distance multiplier. +#multiplier: 3 +# Font configuration +#font: +# Normal (roman) font face +#normal: +# Font family +# +# Default: +# - (macOS) Menlo +# - (Linux/BSD) monospace +# - (Windows) Consolas +#family: monospace +# The `style` can be specified to pick a specific face. +#style: Regular +# Bold font face +#bold: +# Font family +# +# If the bold family is not specified, it will fall back to the +# value specified for the normal font. +#family: monospace +# The `style` can be specified to pick a specific face. +#style: Bold +# Italic font face +#italic: +# Font family +# +# If the italic family is not specified, it will fall back to the +# value specified for the normal font. +#family: monospace +# The `style` can be specified to pick a specific face. +#style: Italic +# Bold italic font face +#bold_italic: +# Font family +# +# If the bold italic family is not specified, it will fall back to the +# value specified for the normal font. +#family: monospace +# The `style` can be specified to pick a specific face. +#style: Bold Italic +# Point size +#size: 11.0 +# Offset is the extra space around each character. `offset.y` can be thought +# of as modifying the line spacing, and `offset.x` as modifying the letter +# spacing. +#offset: +# x: 0 +# y: 0 +# Glyph offset determines the locations of the glyphs within their cells with +# the default being at the bottom. Increasing `x` moves the glyph to the +# right, increasing `y` moves the glyph upward. +#glyph_offset: +# x: 0 +# y: 0 +# Thin stroke font rendering (macOS only) +# +# Thin strokes are suitable for retina displays, but for non-retina screens +# it is recommended to set `use_thin_strokes` to `false`. +#use_thin_strokes: true +# Use built-in font for box drawing characters. +# +# If `true`, Alacritty will use a custom built-in font for box drawing +# characters (Unicode points 2500 - 259f). +# +#builtin_box_drawing: true +# If `true`, bold text is drawn using the bright color variants. +#draw_bold_text_with_bright_colors: false +# Colors (Tomorrow Night) +#colors: +# Default colors +#primary: +# background: '#1d1f21' +# foreground: '#c5c8c6' +# Bright and dim foreground colors +# +# The dimmed foreground color is calculated automatically if it is not +# present. If the bright foreground color is not set, or +# `draw_bold_text_with_bright_colors` is `false`, the normal foreground +# color will be used. +#dim_foreground: '#828482' +#bright_foreground: '#eaeaea' +# Cursor colors +# +# Colors which should be used to draw the terminal cursor. +# +# Allowed values are CellForeground/CellBackground, which reference the +# affected cell, or hexadecimal colors like #ff00ff. +#cursor: +# text: CellBackground +# cursor: CellForeground +# Vi mode cursor colors +# +# Colors for the cursor when the vi mode is active. +# +# Allowed values are CellForeground/CellBackground, which reference the +# affected cell, or hexadecimal colors like #ff00ff. +#vi_mode_cursor: +# text: CellBackground +# cursor: CellForeground +# Search colors +# +# Colors used for the search bar and match highlighting. +#search: +# Allowed values are CellForeground/CellBackground, which reference the +# affected cell, or hexadecimal colors like #ff00ff. +#matches: +# foreground: '#000000' +# background: '#ffffff' +#focused_match: +# foreground: '#ffffff' +# background: '#000000' +#bar: +# background: '#c5c8c6' +# foreground: '#1d1f21' +# Keyboard regex hints +#hints: +# First character in the hint label +# +# Allowed values are CellForeground/CellBackground, which reference the +# affected cell, or hexadecimal colors like #ff00ff. +#start: +# foreground: '#1d1f21' +# background: '#e9ff5e' +# All characters after the first one in the hint label +# +# Allowed values are CellForeground/CellBackground, which reference the +# affected cell, or hexadecimal colors like #ff00ff. +#end: +# foreground: '#e9ff5e' +# background: '#1d1f21' +# Line indicator +# +# Color used for the indicator displaying the position in history during +# search and vi mode. +# +# By default, these will use the opposing primary color. +#line_indicator: +# foreground: None +# background: None +# Selection colors +# +# Colors which should be used to draw the selection area. +# +# Allowed values are CellForeground/CellBackground, which reference the +# affected cell, or hexadecimal colors like #ff00ff. +#selection: +# text: CellBackground +# background: CellForeground +# Normal colors +#normal: +# black: '#1d1f21' +# red: '#cc6666' +# green: '#b5bd68' +# yellow: '#f0c674' +# blue: '#81a2be' +# magenta: '#b294bb' +# cyan: '#8abeb7' +# white: '#c5c8c6' +# Bright colors +#bright: +# black: '#666666' +# red: '#d54e53' +# green: '#b9ca4a' +# yellow: '#e7c547' +# blue: '#7aa6da' +# magenta: '#c397d8' +# cyan: '#70c0b1' +# white: '#eaeaea' +# Dim colors +# +# If the dim colors are not set, they will be calculated automatically based +# on the `normal` colors. +#dim: +# black: '#131415' +# red: '#864343' +# green: '#777c44' +# yellow: '#9e824c' +# blue: '#556a7d' +# magenta: '#75617b' +# cyan: '#5b7d78' +# white: '#828482' +# Indexed Colors +# +# The indexed colors include all colors from 16 to 256. +# When these are not set, they're filled with sensible defaults. +# +# Example: +# `- { index: 16, color: '#ff00ff' }` +# +#indexed_colors: [] +# Transparent cell backgrounds +# +# Whether or not `window.opacity` applies to all cell backgrounds or only to +# the default background. When set to `true` all cells will be transparent +# regardless of their background color. +#transparent_background_colors: false +# Bell +# +# The bell is rung every time the BEL control character is received. +#bell: +# Visual Bell Animation +# +# Animation effect for flashing the screen when the visual bell is rung. +# +# Values for `animation`: +# - Ease +# - EaseOut +# - EaseOutSine +# - EaseOutQuad +# - EaseOutCubic +# - EaseOutQuart +# - EaseOutQuint +# - EaseOutExpo +# - EaseOutCirc +# - Linear +#animation: EaseOutExpo +# Duration of the visual bell flash in milliseconds. A `duration` of `0` will +# disable the visual bell animation. +#duration: 0 +# Visual bell animation color. +#color: '#ffffff' +# Bell Command +# +# This program is executed whenever the bell is rung. +# +# When set to `command: None`, no command will be executed. +# +# Example: +# command: +# program: notify-send +# args: ["Hello, World!"] +# +#command: None +#selection: +# This string contains all characters that are used as separators for +# "semantic words" in Alacritty. +#semantic_escape_chars: ",โ”‚`|:\"' ()[]{}<>\t" +# When set to `true`, selected text will be copied to the primary clipboard. +#save_to_clipboard: false +#cursor: +# Cursor style +#style: +# Cursor shape +# +# Values for `shape`: +# - โ–‡ Block +# - _ Underline +# - | Beam +#shape: Block +# Cursor blinking state +# +# Values for `blinking`: +# - Never: Prevent the cursor from ever blinking +# - Off: Disable blinking by default +# - On: Enable blinking by default +# - Always: Force the cursor to always blink +#blinking: Off +# Vi mode cursor style +# +# If the vi mode cursor style is `None` or not specified, it will fall back to +# the style of the active value of the normal cursor. +# +# See `cursor.style` for available options. +#vi_mode_style: None +# Cursor blinking interval in milliseconds. +#blink_interval: 750 +# If this is `true`, the cursor will be rendered as a hollow box when the +# window is not focused. +#unfocused_hollow: true +# Thickness of the cursor relative to the cell width as floating point number +# from `0.0` to `1.0`. +#thickness: 0.15 +# Live config reload (changes require restart) +#live_config_reload: true +# Shell +# +# You can set `shell.program` to the path of your favorite shell, e.g. +# `/bin/fish`. Entries in `shell.args` are passed unmodified as arguments to the +# shell. +# +# Default: +# - (macOS) /bin/bash --login +# - (Linux/BSD) user login shell +# - (Windows) powershell +#shell: +# program: /bin/bash +# args: +# - --login +# Startup directory +# +# Directory the shell is started in. If this is unset, or `None`, the working +# directory of the parent process will be used. +#working_directory: None +# Send ESC (\x1b) before characters when alt is pressed. +#alt_send_esc: true +# Offer IPC using `alacritty msg` (unix only) +#ipc_socket: true +#mouse: +# Click settings +# +# The `double_click` and `triple_click` settings control the time +# alacritty should wait for accepting multiple clicks as one double +# or triple click. +#double_click: { threshold: 300 } +#triple_click: { threshold: 300 } +# If this is `true`, the cursor is temporarily hidden when typing. +#hide_when_typing: false +# Regex hints +# +# Terminal hints can be used to find text in the visible part of the terminal +# and pipe it to other applications. +#hints: +# Keys used for the hint labels. +#alphabet: "jfkdls;ahgurieowpq" +# List with all available hints +# +# Each hint must have a `regex` and either an `action` or a `command` field. +# The fields `mouse`, `binding` and `post_processing` are optional. +# +# The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and +# `mouse.mods` accept the same values as they do in the `key_bindings` section. +# +# The `mouse.enabled` field controls if the hint should be underlined while +# the mouse with all `mouse.mods` keys held or the vi mode cursor is above it. +# +# If the `post_processing` field is set to `true`, heuristics will be used to +# shorten the match if there are characters likely not to be part of the hint +# (e.g. a trailing `.`). This is most useful for URIs. +# +# Values for `action`: +# - Copy +# Copy the hint's text to the clipboard. +# - Paste +# Paste the hint's text to the terminal or search. +# - Select +# Select the hint's text. +# - MoveViModeCursor +# Move the vi mode cursor to the beginning of the hint. +#enabled: +# - regex: "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\ +# [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^โŸจโŸฉ`]+" +# command: xdg-open +# post_processing: true +# mouse: +# enabled: true +# mods: None +# binding: +# key: U +# mods: Control|Shift +# Mouse bindings +# +# Mouse bindings are specified as a list of objects, much like the key +# bindings further below. +# +# To trigger mouse bindings when an application running within Alacritty +# captures the mouse, the `Shift` modifier is automatically added as a +# requirement. +# +# Each mouse binding will specify a: +# +# - `mouse`: +# +# - Middle +# - Left +# - Right +# - Numeric identifier such as `5` +# +# - `action` (see key bindings for actions not exclusive to mouse mode) +# +# - Mouse exclusive actions: +# +# - ExpandSelection +# Expand the selection to the current mouse cursor location. +# +# And optionally: +# +# - `mods` (see key bindings) +#mouse_bindings: +# - { mouse: Right, action: ExpandSelection } +# - { mouse: Right, mods: Control, action: ExpandSelection } +# - { mouse: Middle, mode: ~Vi, action: PasteSelection } +# Key bindings +# +# Key bindings are specified as a list of objects. For example, this is the +# default paste binding: +# +# `- { key: V, mods: Control|Shift, action: Paste }` +# +# Each key binding will specify a: +# +# - `key`: Identifier of the key pressed +# +# - A-Z +# - F1-F24 +# - Key0-Key9 +# +# A full list with available key codes can be found here: +# https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants +# +# Instead of using the name of the keys, the `key` field also supports using +# the scancode of the desired key. Scancodes have to be specified as a +# decimal number. This command will allow you to display the hex scancodes +# for certain keys: +# +# `showkey --scancodes`. +# +# Then exactly one of: +# +# - `chars`: Send a byte sequence to the running application +# +# The `chars` field writes the specified string to the terminal. This makes +# it possible to pass escape sequences. To find escape codes for bindings +# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside +# of tmux. Note that applications use terminfo to map escape sequences back +# to keys. It is therefore required to update the terminfo when changing an +# escape sequence. +# +# - `action`: Execute a predefined action +# +# - ToggleViMode +# - SearchForward +# Start searching toward the right of the search origin. +# - SearchBackward +# Start searching toward the left of the search origin. +# - Copy +# - Paste +# - IncreaseFontSize +# - DecreaseFontSize +# - ResetFontSize +# - ScrollPageUp +# - ScrollPageDown +# - ScrollHalfPageUp +# - ScrollHalfPageDown +# - ScrollLineUp +# - ScrollLineDown +# - ScrollToTop +# - ScrollToBottom +# - ClearHistory +# Remove the terminal's scrollback history. +# - Hide +# Hide the Alacritty window. +# - Minimize +# Minimize the Alacritty window. +# - Quit +# Quit Alacritty. +# - ToggleFullscreen +# - SpawnNewInstance +# Spawn a new instance of Alacritty. +# - CreateNewWindow +# Create a new Alacritty window from the current process. +# - ClearLogNotice +# Clear Alacritty's UI warning and error notice. +# - ClearSelection +# Remove the active selection. +# - ReceiveChar +# - None +# +# - Vi mode exclusive actions: +# +# - Open +# Perform the action of the first matching hint under the vi mode cursor +# with `mouse.enabled` set to `true`. +# - ToggleNormalSelection +# - ToggleLineSelection +# - ToggleBlockSelection +# - ToggleSemanticSelection +# Toggle semantic selection based on `selection.semantic_escape_chars`. +# +# - Vi mode exclusive cursor motion actions: +# +# - Up +# One line up. +# - Down +# One line down. +# - Left +# One character left. +# - Right +# One character right. +# - First +# First column, or beginning of the line when already at the first column. +# - Last +# Last column, or beginning of the line when already at the last column. +# - FirstOccupied +# First non-empty cell in this terminal row, or first non-empty cell of +# the line when already at the first cell of the row. +# - High +# Top of the screen. +# - Middle +# Center of the screen. +# - Low +# Bottom of the screen. +# - SemanticLeft +# Start of the previous semantically separated word. +# - SemanticRight +# Start of the next semantically separated word. +# - SemanticLeftEnd +# End of the previous semantically separated word. +# - SemanticRightEnd +# End of the next semantically separated word. +# - WordLeft +# Start of the previous whitespace separated word. +# - WordRight +# Start of the next whitespace separated word. +# - WordLeftEnd +# End of the previous whitespace separated word. +# - WordRightEnd +# End of the next whitespace separated word. +# - Bracket +# Character matching the bracket at the cursor's location. +# - SearchNext +# Beginning of the next match. +# - SearchPrevious +# Beginning of the previous match. +# - SearchStart +# Start of the match to the left of the vi mode cursor. +# - SearchEnd +# End of the match to the right of the vi mode cursor. +# +# - Search mode exclusive actions: +# - SearchFocusNext +# Move the focus to the next search match. +# - SearchFocusPrevious +# Move the focus to the previous search match. +# - SearchConfirm +# - SearchCancel +# - SearchClear +# Reset the search regex. +# - SearchDeleteWord +# Delete the last word in the search regex. +# - SearchHistoryPrevious +# Go to the previous regex in the search history. +# - SearchHistoryNext +# Go to the next regex in the search history. +# +# - macOS exclusive actions: +# - ToggleSimpleFullscreen +# Enter fullscreen without occupying another space. +# +# - Linux/BSD exclusive actions: +# +# - CopySelection +# Copy from the selection buffer. +# - PasteSelection +# Paste from the selection buffer. +# +# - `command`: Fork and execute a specified command plus arguments +# +# The `command` field must be a map containing a `program` string and an +# `args` array of command line parameter strings. For example: +# `{ program: "alacritty", args: ["-e", "vttest"] }` +# +# And optionally: +# +# - `mods`: Key modifiers to filter binding actions +# +# - Command +# - Control +# - Option +# - Super +# - Shift +# - Alt +# +# Multiple `mods` can be combined using `|` like this: +# `mods: Control|Shift`. +# Whitespace and capitalization are relevant and must match the example. +# +# - `mode`: Indicate a binding for only specific terminal reported modes +# +# This is mainly used to send applications the correct escape sequences +# when in different modes. +# +# - AppCursor +# - AppKeypad +# - Search +# - Alt +# - Vi +# +# A `~` operator can be used before a mode to apply the binding whenever +# the mode is *not* active, e.g. `~Alt`. +# +# Bindings are always filled by default, but will be replaced when a new +# binding with the same triggers is defined. To unset a default binding, it can +# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for +# a no-op if you do not wish to receive input characters for that binding. +# +# If the same trigger is assigned to multiple actions, all of them are executed +# in the order they were defined in. +key_bindings: +- { key: Z, mods: Control, chars: "fzf-z \x0D" } +#- { key: Paste, action: Paste } +#- { key: Copy, action: Copy } +#- { key: L, mods: Control, action: ClearLogNotice } +#- { key: L, mods: Control, mode: ~Vi|~Search, chars: "\x0c" } +#- { key: PageUp, mods: Shift, mode: ~Alt, action: ScrollPageUp, } +#- { key: PageDown, mods: Shift, mode: ~Alt, action: ScrollPageDown } +#- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop, } +#- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom } +# Vi Mode +#- { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode } +#- { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom } +#- { key: Escape, mode: Vi|~Search, action: ClearSelection } +#- { key: I, mode: Vi|~Search, action: ToggleViMode } +#- { key: I, mode: Vi|~Search, action: ScrollToBottom } +#- { key: C, mods: Control, mode: Vi|~Search, action: ToggleViMode } +#- { key: Y, mods: Control, mode: Vi|~Search, action: ScrollLineUp } +#- { key: E, mods: Control, mode: Vi|~Search, action: ScrollLineDown } +#- { key: G, mode: Vi|~Search, action: ScrollToTop } +#- { key: G, mods: Shift, mode: Vi|~Search, action: ScrollToBottom } +#- { key: B, mods: Control, mode: Vi|~Search, action: ScrollPageUp } +#- { key: F, mods: Control, mode: Vi|~Search, action: ScrollPageDown } +#- { key: U, mods: Control, mode: Vi|~Search, action: ScrollHalfPageUp } +#- { key: D, mods: Control, mode: Vi|~Search, action: ScrollHalfPageDown } +#- { key: Y, mode: Vi|~Search, action: Copy } +#- { key: Y, mode: Vi|~Search, action: ClearSelection } +#- { key: Copy, mode: Vi|~Search, action: ClearSelection } +#- { key: V, mode: Vi|~Search, action: ToggleNormalSelection } +#- { key: V, mods: Shift, mode: Vi|~Search, action: ToggleLineSelection } +#- { key: V, mods: Control, mode: Vi|~Search, action: ToggleBlockSelection } +#- { key: V, mods: Alt, mode: Vi|~Search, action: ToggleSemanticSelection } +#- { key: Return, mode: Vi|~Search, action: Open } +#- { key: K, mode: Vi|~Search, action: Up } +#- { key: J, mode: Vi|~Search, action: Down } +#- { key: H, mode: Vi|~Search, action: Left } +#- { key: L, mode: Vi|~Search, action: Right } +#- { key: Up, mode: Vi|~Search, action: Up } +#- { key: Down, mode: Vi|~Search, action: Down } +#- { key: Left, mode: Vi|~Search, action: Left } +#- { key: Right, mode: Vi|~Search, action: Right } +#- { key: Key0, mode: Vi|~Search, action: First } +#- { key: Key4, mods: Shift, mode: Vi|~Search, action: Last } +#- { key: Key6, mods: Shift, mode: Vi|~Search, action: FirstOccupied } +#- { key: H, mods: Shift, mode: Vi|~Search, action: High } +#- { key: M, mods: Shift, mode: Vi|~Search, action: Middle } +#- { key: L, mods: Shift, mode: Vi|~Search, action: Low } +#- { key: B, mode: Vi|~Search, action: SemanticLeft } +#- { key: W, mode: Vi|~Search, action: SemanticRight } +#- { key: E, mode: Vi|~Search, action: SemanticRightEnd } +#- { key: B, mods: Shift, mode: Vi|~Search, action: WordLeft } +#- { key: W, mods: Shift, mode: Vi|~Search, action: WordRight } +#- { key: E, mods: Shift, mode: Vi|~Search, action: WordRightEnd } +#- { key: Key5, mods: Shift, mode: Vi|~Search, action: Bracket } +#- { key: Slash, mode: Vi|~Search, action: SearchForward } +#- { key: Slash, mods: Shift, mode: Vi|~Search, action: SearchBackward } +#- { key: N, mode: Vi|~Search, action: SearchNext } +#- { key: N, mods: Shift, mode: Vi|~Search, action: SearchPrevious } +# Search Mode +#- { key: Return, mode: Search|Vi, action: SearchConfirm } +#- { key: Escape, mode: Search, action: SearchCancel } +#- { key: C, mods: Control, mode: Search, action: SearchCancel } +#- { key: U, mods: Control, mode: Search, action: SearchClear } +#- { key: W, mods: Control, mode: Search, action: SearchDeleteWord } +#- { key: P, mods: Control, mode: Search, action: SearchHistoryPrevious } +#- { key: N, mods: Control, mode: Search, action: SearchHistoryNext } +#- { key: Up, mode: Search, action: SearchHistoryPrevious } +#- { key: Down, mode: Search, action: SearchHistoryNext } +#- { key: Return, mode: Search|~Vi, action: SearchFocusNext } +#- { key: Return, mods: Shift, mode: Search|~Vi, action: SearchFocusPrevious } +# (Windows, Linux, and BSD only) +#- { key: V, mods: Control|Shift, mode: ~Vi, action: Paste } +#- { key: C, mods: Control|Shift, action: Copy } +#- { key: F, mods: Control|Shift, mode: ~Search, action: SearchForward } +#- { key: B, mods: Control|Shift, mode: ~Search, action: SearchBackward } +#- { key: C, mods: Control|Shift, mode: Vi|~Search, action: ClearSelection } +#- { key: Insert, mods: Shift, action: PasteSelection } +#- { key: Key0, mods: Control, action: ResetFontSize } +#- { key: Equals, mods: Control, action: IncreaseFontSize } +#- { key: Plus, mods: Control, action: IncreaseFontSize } +#- { key: NumpadAdd, mods: Control, action: IncreaseFontSize } +#- { key: Minus, mods: Control, action: DecreaseFontSize } +#- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize } +# (Windows only) +#- { key: Return, mods: Alt, action: ToggleFullscreen } +# (macOS only) +#- { key: K, mods: Command, mode: ~Vi|~Search, chars: "\x0c" } +#- { key: K, mods: Command, mode: ~Vi|~Search, action: ClearHistory } +#- { key: Key0, mods: Command, action: ResetFontSize } +#- { key: Equals, mods: Command, action: IncreaseFontSize } +#- { key: Plus, mods: Command, action: IncreaseFontSize } +#- { key: NumpadAdd, mods: Command, action: IncreaseFontSize } +#- { key: Minus, mods: Command, action: DecreaseFontSize } +#- { key: NumpadSubtract, mods: Command, action: DecreaseFontSize } +#- { key: V, mods: Command, action: Paste } +#- { key: C, mods: Command, action: Copy } +#- { key: C, mods: Command, mode: Vi|~Search, action: ClearSelection } +#- { key: H, mods: Command, action: Hide } +#- { key: H, mods: Command|Alt, action: HideOtherApplications } +#- { key: M, mods: Command, action: Minimize } +#- { key: Q, mods: Command, action: Quit } +#- { key: W, mods: Command, action: Quit } +#- { key: N, mods: Command, action: SpawnNewInstance } +#- { key: F, mods: Command|Control, action: ToggleFullscreen } +#- { key: F, mods: Command, mode: ~Search, action: SearchForward } +#- { key: B, mods: Command, mode: ~Search, action: SearchBackward } +#debug: +# Display the time it takes to redraw each frame. +#render_timer: false +# Keep the log file after quitting Alacritty. +#persistent_logging: false +# Log level +# +# Values for `log_level`: +# - Off +# - Error +# - Warn +# - Info +# - Debug +# - Trace +#log_level: Warn +# Print all received window events. +#print_events: false diff --git a/dependencies b/dependencies index 68c7317..8e5decb 100644 --- a/dependencies +++ b/dependencies @@ -5,6 +5,7 @@ firefox i3exit i3-scrot i3-wm +i3blocks libqalculate nextcloud pavucontrol diff --git a/emacs/.config/doom/org-agenda-files b/emacs/.config/doom/org-agenda-files deleted file mode 100644 index 4690396..0000000 --- a/emacs/.config/doom/org-agenda-files +++ /dev/null @@ -1,3 +0,0 @@ -/home/julian/Nextcloud/studium/vorlesungen/SS21/luftundraumfahrtlabor/lrl-fragenkatalog.org -/home/julian/Nextcloud/studium/vorlesungen/SS21/borddatenverarbeitung/bdv-fragenkatalog.org -/home/julian/Nextcloud/studium/vorlesungen/SS21/raumfahrtbetrieb/rb-vorbereitung.org diff --git a/emacs/chemacs/.emacs-profiles.el b/emacs/chemacs/.emacs-profiles.el new file mode 100644 index 0000000..74864bf --- /dev/null +++ b/emacs/chemacs/.emacs-profiles.el @@ -0,0 +1,8 @@ +(("default" . ((user-emacs-directory . "~/emacs/doom-emacs"))) +("vanilla" . ((user-emacs-directory . "~/emacs/vanilla"))) +("spacemacs" . ((user-emacs-directory . "~/emacs/spacemacs"))) +) +;(env . (("DOOMDIR" . "~/emacs/doom-config")))))) +;("doom" . ((user-emacs-directory . "~/emacs/doom"))) +;(doom-private-dir . "~/emacs/doom-config")))) +;) diff --git a/emacs/.config/doom/config.el b/emacs/doom/config.org similarity index 57% rename from emacs/.config/doom/config.el rename to emacs/doom/config.org index 99df48a..297d70b 100644 --- a/emacs/.config/doom/config.el +++ b/emacs/doom/config.org @@ -1,8 +1,30 @@ -;;; $DOOMDIR/config.el -*- lexical-binding: t; -*- +#+title: Doom Emacs Config -;; Place your private configuration here! Remember, you do not need to run 'doom -;; sync' after modifying this file! +* Main +#+PROPERTY: header-args :results silent +** Help +#+begin_src emacs-lisp :tangle yes +;; Here are some additional functions/macros that could help you configure Doom: +;; +;; - `load!' for loading external *.el files relative to this one +;; - `use-package!' for configuring packages +;; - `after!' for running code after a package has loaded +;; - `add-load-path!' for adding directories to the `load-path', relative to +;; this file. Emacs searches the `load-path' when you load packages with +;; `require' or `use-package'. +;; - `map!' for binding new keys +;; +;; To get information about any of these functions/macros, move the cursor over +;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k'). +;; This will open documentation for it, including demos of how they are used. +;; +;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how +;; they are implemented. +#+end_src + +** Overall config +#+begin_src emacs-lisp :tangle yes ;; Some functionality uses this to identify you, e.g. GPG configuration, email ;; clients, file templates and snippets. @@ -28,65 +50,85 @@ ;; `load-theme' function. This is the default: (setq doom-theme 'doom-one) -;; If you use `org' and don't want your org files in the default location below, -;; change `org-directory'. It must be set before org loads! -(setq org-directory "~/org") - ;; This determines the style of line numbers in effect. If set to `nil', line ;; numbers are disabled. For relative line numbers, set this to `relative'. (setq display-line-numbers-type 'relative) +#+end_src - -;; Here are some additional functions/macros that could help you configure Doom: -;; -;; - `load!' for loading external *.el files relative to this one -;; - `use-package!' for configuring packages -;; - `after!' for running code after a package has loaded -;; - `add-load-path!' for adding directories to the `load-path', relative to -;; this file. Emacs searches the `load-path' when you load packages with -;; `require' or `use-package'. -;; - `map!' for binding new keys -;; -;; To get information about any of these functions/macros, move the cursor over -;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k'). -;; This will open documentation for it, including demos of how they are used. -;; -;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how -;; they are implemented. +#+begin_src emacs-lisp :tangle yes ;; Open external terminal -;; (map! :map doom-leader-open-map :desc "Open" "t" (cmd! (call-process-shell-command "terminal&" nil 0))) -(map! :leader :desc "Open external terminal" "o t" (cmd! (call-process-shell-command "xfce4-terminal&" nil 0))) +(map! :leader :desc "Open external terminal" "o t" (cmd! (call-process-shell-command "xfce4-terminal &" nil 0))) ;; Remap font scaling keybindings to make more sense (map! :desc "Increase font size" :n "C-+" #'text-scale-increase) (map! :desc "Decrease font size" :n "C--" #'text-scale-decrease) (map! :desc "Reset font size" :n "C-=" #'doom/reset-font-size) +(map! :desc "Flycheck next error" :nv "g n" #'flycheck-next-error) +(map! :desc "Flycheck previous error" :nv "g N" #'flycheck-previous-error) -;; Org-mode custom keybindings -;; (map! :map org-mode-map :nvi "C-k" #'org-backward-element) -;; (map! :map org-mode-map :nvi "C-j" #'org-forward-element) -;; (map! :map org-mode-map :nvi "C-h" #'org-up-element) -;; (map! :map org-mode-map :nvi "C-l" #'org-down-element) +(map! :desc "Format and save" :nvi "C-s" #'fd-format-and-save) +(map! :leader "w 1" #'delete-other-windows) +(setq-default evil-escape-key-sequence "kj") + +(defun fd-format-and-save() + (interactive) + (company-abort) + (evil-force-normal-state) + (+format/buffer) + (save-buffer)) +#+end_src + +** Org +#+begin_src emacs-lisp :tangle yes + +;; If you use `org' and don't want your org files in the default location below, +;; change `org-directory'. It must be set before org loads! +(setq org-directory "~/Nextcloud/org" + org-roam-directory "~/Nextcloud/org-roam") + +;; (setq org-agenda-files (list "~/org")) +;; (custom-set-variables +;; '(org-directory "~/org") +;; '(org-agenda-files (list org-directory))) + +;; (add-to-list 'org-agenda-files "~/org/anothertest.org" 'append) + +;; Adding my org-agenda files +(after! org + (setq org-agenda-files (expand-file-name "org-agenda-files" doom-private-dir))) + +(setq org-export-allow-bind-keywords t) + +;; (map! :nv "SPC r" "SPC n r") + +(map! :map org-mode-map :nvi "C-k" #'org-backward-element) +(map! :map org-mode-map :nvi "C-j" #'org-forward-element) +(map! :map org-mode-map :nvi "C-h" #'org-up-element) +(map! :map org-mode-map :nvi "C-l" #'org-down-element) +#+end_src + +** Spell Checking +#+begin_src emacs-lisp :tangle yes ;; Spell checking settings -;; TODO make toggling of spell checking ('SPC t s') use flyspell-mode in text modes and flyspell-prog-mode in programming modes (see hooks below) +;; TODO make toggling of spell checking ('SPC t s') use flyspell-mode in text modesm and flyspell-prog-mode in programming modes (see hooks below) ;; Removing hooks for automatic spell checking set here: https://github.com/hlissner/doom-emacs/blob/develop/modules/checkers/spell/config.el (remove-hook! '(org-mode-hook - markdown-mode-hook - TeX-mode-hook - rst-mode-hook - mu4e-compose-mode-hook - message-mode-hook - git-commit-mode-hook) - #'flyspell-mode) + markdown-mode-hook + TeX-mode-hook + rst-mode-hook + mu4e-compose-mode-hook + message-mode-hook + git-commit-mode-hook) + #'flyspell-mode) (remove-hook! '(yaml-mode-hook - conf-mode-hook - prog-mode-hook) - #'flyspell-prog-mode) + conf-mode-hook + prog-mode-hook) + #'flyspell-prog-mode) (setq ispell-dictionary "english") @@ -99,6 +141,27 @@ (ispell-change-dictionary change) (message "Dictionary switched from %s to %s" dic change) )) +#+end_src + +** Flutter +#+begin_src emacs-lisp :tangle yes + +(setq lsp-dart-flutter-sdk-dir "/home/julian/snap/flutter/common/flutter") +#+end_src +** Evil snipe +#+begin_src emacs-lisp :tangle yes + +;; Make sniping simpler for german keyboard +(setq evil-snipe-scope 'visible) +(map! :map evil-snipe-override-mode-map :m "," #'evil-snipe-repeat) +(map! :map evil-snipe-override-mode-map :m ";" #'evil-snipe-repeat-reverse) +(map! :map evil-snipe-parent-transient-map "," #'evil-snipe-repeat) +(map! :map evil-snipe-parent-transient-map ";" #'evil-snipe-repeat-reverse) + +#+end_src + +** Matlab +#+begin_src emacs-lisp :tangle yes ;; (autoload 'matlab-mode "matlab" "Matlab Editing Mode" t) ;; (add-to-list @@ -106,17 +169,11 @@ ;; '("\\.m$" . matlab-mode)) ;; (setq matlab-indent-function t) ;; (setq matlab-shell-command "/urs/local/bin/matlab") +#+end_src -;; (setq org-agenda-files (list "~/org")) -;; (custom-set-variables -;; '(org-directory "~/org") - ;; '(org-agenda-files (list org-directory))) - -;; (add-to-list 'org-agenda-files "~/org/anothertest.org" 'append) - -;; Adding my org-agenda files -(after! org - (setq org-agenda-files (expand-file-name "org-agenda-files" doom-private-dir))) +** Features +*** Toggle word case +#+begin_src elisp :tangle yes (map! :desc "Toggle case of word" :nv "g C" #'toggle-word-case) @@ -140,3 +197,47 @@ ((string= "Lu" first-char-prop) ; Upper case (downcase-region $p1 (+ $p1 1))) (t (message "Word does not start with a alphabetic character")))))) +#+end_src + +*** Tetris +#+begin_src emacs-lisp :tangle yes + +(add-hook 'tetris-mode-hook #'turn-off-evil-mode) +#+end_src +** Company +#+begin_src emacs-lisp :tangle yes + +;; Add company-quickhelp +(company-quickhelp-mode) + +(map! :map company-active-map "TAB" nil) +(map! :map company-active-map "" nil) +#+end_src + +** More +#+begin_src emacs-lisp :tangle yes +(defun fd-pretty-print-dirty-json() + (interactive) + (let ((new-buffer-contents (shell-command-to-string (format "echo '%s' | newliner" (buffer-string))))) + (erase-buffer) + (insert new-buffer-contents) + (evil-indent (buffer-end -1) (buffer-end +1))) + ) +#+end_src +** Python +#+begin_src emacs-lisp :tangle yes + +;; Python settings +;; (add-hook 'python-mode-hook (lambda () +;; (setq flycheck-checker 'python-pylint))) + +;; (add-hook 'pyhon-mode-local-vars-hook +;; (lambda () +;; (when (flycheck-may-enable-checker 'lsp) +;; (flycheck-select-checker 'python-pylint)))) + +#+end_src +** Haskell +#+begin_src emacs-lisp :tangle yes +(set-docsets! 'haskell-mode "Haskell") +#+end_src diff --git a/emacs/.config/doom/init.el b/emacs/doom/init.el similarity index 87% rename from emacs/.config/doom/init.el rename to emacs/doom/init.el index ecbdb30..818ab87 100644 --- a/emacs/.config/doom/init.el +++ b/emacs/doom/init.el @@ -4,8 +4,8 @@ ;; in. Remember to run 'doom sync' after modifying it! ;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's -;; documentation. There you'll find a "Module Index" link where you'll find -;; a comprehensive list of Doom's modules and what flags they support. +;; documentation. There you'll find a link to Doom's Module Index where all +;; of our modules are listed, including what flags they support. ;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or ;; 'C-c c k' for non-vim users) to view its documentation. This works on @@ -15,6 +15,7 @@ ;; directory (for easy access to its source code). (doom! :input + ;;bidi ; (tfel ot) thgir etirw uoy gnipleh ;;chinese ;;japanese ;;layout ; auie,ctsrnm is the superior home row @@ -23,15 +24,15 @@ company ; the ultimate code completion backend ;;helm ; the *other* search engine for love and life ;;ido ; the other *other* search engine... - ivy ; a search engine for love and life + ;;ivy ; a search engine for love and life + vertico ; the search engine of the future :ui ;;deft ; notational velocity for Emacs doom ; what makes DOOM look the way it does doom-dashboard ; a nifty splash screen for Emacs - doom-quit ; DOOM quit-message prompts when you quit Emacs + ;;doom-quit ; DOOM quit-message prompts when you quit Emacs ;;(emoji +unicode) ; ๐Ÿ™‚ - ;;fill-column ; a `fill-column' indicator hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW ;;hydra ;;indent-guides ; highlighted indent columns @@ -39,11 +40,11 @@ ;;minimap ; show a map of the code on the side modeline ; snazzy, Atom-inspired modeline, plus API ;;nav-flash ; blink cursor line after big motions - neotree ; a project drawer, like NERDTree for vim + ;;neotree ; a project drawer, like NERDTree for vim ophints ; highlight the region an operation acts on (popup +defaults) ; tame sudden yet inevitable temporary windows ;;tabs ; a tab bar for Emacs - ;; treemacs ; a project drawer, like neotree but cooler + ;;treemacs ; a project drawer, like neotree but cooler ;;unicode ; extended unicode support for various languages vc-gutter ; vcs diff in the fringe vi-tilde-fringe ; fringe tildes to mark beyond EOB @@ -85,6 +86,7 @@ :tools ;;ansible + ;;biblio ; Writes a PhD for you (citation needed) ;;debugger ; FIXME stepping through code, to help you add bugs ;;direnv docker @@ -92,10 +94,10 @@ ;;ein ; tame Jupyter notebooks with emacs (eval +overlay) ; run code, run (also, repls) ;;gist ; interacting with github gists - lookup ; navigate your code and its documentation - lsp + (lookup +docsets) ; navigate your code and its documentation + lsp ; M-x vscode magit ; a git porcelain for Emacs - ;;make ; run make tasks from Emacs + make ; run make tasks from Emacs ;;pass ; password manager for nerds ;;pdf ; pdf enhancements ;;prodigy ; FIXME managing external services & code builders @@ -120,6 +122,7 @@ ;;csharp ; unity, .NET, and mono shenanigans ;;data ; config/data formats ;;(dart +flutter) ; paint ui and not much else + ;;dhall ;;elixir ; erlang done right ;;elm ; care for a cup of TEA? emacs-lisp ; drown in parentheses @@ -127,17 +130,19 @@ ;;ess ; emacs speaks statistics ;;factor ;;faust ; dsp, but you get to keep your soul + ;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER) ;;fsharp ; ML stands for Microsoft's Language ;;fstar ; (dependent) types and (monadic) effects and Z3 ;;gdscript ; the language you waited for ;;(go +lsp) ; the hipster dialect - ;;(haskell +dante) ; a language that's lazier than I am + ;;(graphql +lsp) ; Give queries a REST + (haskell +lsp) ; a language that's lazier than I am ;;hy ; readability of scheme w/ speed of python ;;idris ; a language you can depend on - ;;json ; At least it ain't XML - ;;(java +meghanada) ; the poster child for carpal tunnel syndrome + json ; At least it ain't XML + ;;(java +lsp) ; the poster child for carpal tunnel syndrome ;;javascript ; all(hope(abandon(ye(who(enter(here)))))) - ;; julia ; a better, faster MATLAB + ;;julia ; a better, faster MATLAB ;;kotlin ; a better, slicker Java(Script) latex ; writing papers in Emacs has never been so fun ;;lean ; for folks with too much to prove @@ -171,7 +176,7 @@ ;;zig ; C, but simpler :email - ;;(mu4e +gmail) + ;;(mu4e +org +gmail) ;;notmuch ;;(wanderlust +gmail) @@ -184,5 +189,5 @@ ;;twitter ; twitter client https://twitter.com/vnought :config - ;;literate + literate (default +bindings +smartparens)) diff --git a/emacs/doom/org-agenda-files b/emacs/doom/org-agenda-files new file mode 100644 index 0000000..b9f086a --- /dev/null +++ b/emacs/doom/org-agenda-files @@ -0,0 +1 @@ +/home/julian/Nextcloud/org diff --git a/emacs/.config/doom/packages.el b/emacs/doom/packages.el similarity index 96% rename from emacs/.config/doom/packages.el rename to emacs/doom/packages.el index b80e9cc..5e64d41 100644 --- a/emacs/.config/doom/packages.el +++ b/emacs/doom/packages.el @@ -9,6 +9,11 @@ ;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror: ;(package! some-package) +(package! company-quickhelp) + +(unpin! org-roam) +(package! org-roam-ui) + ;; To install a package directly from a remote git repo, you must specify a ;; `:recipe'. You'll find documentation on what `:recipe' accepts here: ;; https://github.com/raxod502/straight.el#the-recipe-format diff --git a/emacs/spacemacs/.spacemacs b/emacs/spacemacs/.spacemacs new file mode 100644 index 0000000..0056f9d --- /dev/null +++ b/emacs/spacemacs/.spacemacs @@ -0,0 +1,644 @@ +;; -*- mode: emacs-lisp; lexical-binding: t -*- +;; This file is loaded by Spacemacs at startup. +;; It must be stored in your home directory. + +(defun dotspacemacs/layers () + "Layer configuration: +This function should only modify configuration layer settings." + (setq-default + ;; Base distribution to use. This is a layer contained in the directory + ;; `+distribution'. For now available distributions are `spacemacs-base' + ;; or `spacemacs'. (default 'spacemacs) + dotspacemacs-distribution 'spacemacs + + ;; Lazy installation of layers (i.e. layers are installed only when a file + ;; with a supported type is opened). Possible values are `all', `unused' + ;; and `nil'. `unused' will lazy install only unused layers (i.e. layers + ;; not listed in variable `dotspacemacs-configuration-layers'), `all' will + ;; lazy install any layer that support lazy installation even the layers + ;; listed in `dotspacemacs-configuration-layers'. `nil' disable the lazy + ;; installation feature and you have to explicitly list a layer in the + ;; variable `dotspacemacs-configuration-layers' to install it. + ;; (default 'unused) + dotspacemacs-enable-lazy-installation 'unused + + ;; If non-nil then Spacemacs will ask for confirmation before installing + ;; a layer lazily. (default t) + dotspacemacs-ask-for-lazy-installation t + + ;; List of additional paths where to look for configuration layers. + ;; Paths must have a trailing slash (i.e. `~/.mycontribs/') + dotspacemacs-configuration-layer-path '() + + ;; List of configuration layers to load. + dotspacemacs-configuration-layers + '(csv + python + ;; ---------------------------------------------------------------- + ;; Example of useful layers you may want to use right away. + ;; Uncomment some layer names and press `SPC f e R' (Vim style) or + ;; `M-m f e R' (Emacs style) to install them. + ;; ---------------------------------------------------------------- + ;; (dart :variables dart-server-sdk-path "/bin/cache/dart-sdk/") + (csharp :variables + csharp-backend nil) + rust + tabs + auto-completion + (auto-completion :variables + auto-completion-return-key-behavior 'complete + auto-completion-tab-key-behavior 'cycle + auto-completion-complete-with-key-sequence nil + auto-completion-complete-with-key-sequence-delay 0.1 + auto-completion-minimum-prefix-length 2 + auto-completion-idle-delay 0.2 + auto-completion-private-snippets-directory nil + auto-completion-enable-snippets-in-popup nil + auto-completion-enable-help-tooltip 't + auto-completion-use-company-box nil + auto-completion-enable-sort-by-usage nil) + ;; better-defaults + emacs-lisp + (git :variables + git-magit-status-fullscreen t) + helm + (lsp :variables + lsp-lens-enable t + lsp-ui-doc-enable t) + ;; markdown + multiple-cursors + org + ;; (shell :variables + ;; shell-default-height 30 + ;; shell-default-position 'bottom) + (spell-checking :variables + spell-checking-enable-by-default nil) + syntax-checking + ;; version-control + treemacs + json + (evil-snipe :variables evil-snipe-enable-alternate-f-and-t-behaviors t) + ) + + + ;; List of additional packages that will be installed without being wrapped + ;; in a layer (generally the packages are installed only and should still be + ;; loaded using load/require/use-package in the user-config section below in + ;; this file). If you need some configuration for these packages, then + ;; consider creating a layer. You can also put the configuration in + ;; `dotspacemacs/user-config'. To use a local version of a package, use the + ;; `:location' property: '(your-package :location "~/path/to/your-package/") + ;; Also include the dependencies as they will not be resolved automatically. + dotspacemacs-additional-packages '(format-all) + + ;; A list of packages that cannot be updated. + dotspacemacs-frozen-packages '() + + ;; A list of packages that will not be installed and loaded. + dotspacemacs-excluded-packages '() + + ;; Defines the behaviour of Spacemacs when installing packages. + ;; Possible values are `used-only', `used-but-keep-unused' and `all'. + ;; `used-only' installs only explicitly used packages and deletes any unused + ;; packages as well as their unused dependencies. `used-but-keep-unused' + ;; installs only the used packages but won't delete unused ones. `all' + ;; installs *all* packages supported by Spacemacs and never uninstalls them. + ;; (default is `used-only') + dotspacemacs-install-packages 'used-only)) + +(defun dotspacemacs/init () + "Initialization: +This function is called at the very beginning of Spacemacs startup, +before layer configuration. +It should only modify the values of Spacemacs settings." + ;; This setq-default sexp is an exhaustive list of all the supported + ;; spacemacs settings. + (setq-default + ;; If non-nil then enable support for the portable dumper. You'll need to + ;; compile Emacs 27 from source following the instructions in file + ;; EXPERIMENTAL.org at to root of the git repository. + ;; + ;; WARNING: pdumper does not work with Native Compilation, so it's disabled + ;; regardless of the following setting when native compilation is in effect. + ;; + ;; (default nil) + dotspacemacs-enable-emacs-pdumper nil + + ;; Name of executable file pointing to emacs 27+. This executable must be + ;; in your PATH. + ;; (default "emacs") + dotspacemacs-emacs-pdumper-executable-file "emacs" + + ;; Name of the Spacemacs dump file. This is the file will be created by the + ;; portable dumper in the cache directory under dumps sub-directory. + ;; To load it when starting Emacs add the parameter `--dump-file' + ;; when invoking Emacs 27.1 executable on the command line, for instance: + ;; ./emacs --dump-file=$HOME/.emacs.d/.cache/dumps/spacemacs-27.1.pdmp + ;; (default (format "spacemacs-%s.pdmp" emacs-version)) + dotspacemacs-emacs-dumper-dump-file (format "spacemacs-%s.pdmp" emacs-version) + + ;; If non-nil ELPA repositories are contacted via HTTPS whenever it's + ;; possible. Set it to nil if you have no way to use HTTPS in your + ;; environment, otherwise it is strongly recommended to let it set to t. + ;; This variable has no effect if Emacs is launched with the parameter + ;; `--insecure' which forces the value of this variable to nil. + ;; (default t) + dotspacemacs-elpa-https t + + ;; Maximum allowed time in seconds to contact an ELPA repository. + ;; (default 5) + dotspacemacs-elpa-timeout 5 + + ;; Set `gc-cons-threshold' and `gc-cons-percentage' when startup finishes. + ;; This is an advanced option and should not be changed unless you suspect + ;; performance issues due to garbage collection operations. + ;; (default '(100000000 0.1)) + dotspacemacs-gc-cons '(100000000 0.1) + + ;; Set `read-process-output-max' when startup finishes. + ;; This defines how much data is read from a foreign process. + ;; Setting this >= 1 MB should increase performance for lsp servers + ;; in emacs 27. + ;; (default (* 1024 1024)) + dotspacemacs-read-process-output-max (* 1024 1024) + + ;; If non-nil then Spacelpa repository is the primary source to install + ;; a locked version of packages. If nil then Spacemacs will install the + ;; latest version of packages from MELPA. Spacelpa is currently in + ;; experimental state please use only for testing purposes. + ;; (default nil) + dotspacemacs-use-spacelpa nil + + ;; If non-nil then verify the signature for downloaded Spacelpa archives. + ;; (default t) + dotspacemacs-verify-spacelpa-archives t + + ;; If non-nil then spacemacs will check for updates at startup + ;; when the current branch is not `develop'. Note that checking for + ;; new versions works via git commands, thus it calls GitHub services + ;; whenever you start Emacs. (default nil) + dotspacemacs-check-for-update nil + + ;; If non-nil, a form that evaluates to a package directory. For example, to + ;; use different package directories for different Emacs versions, set this + ;; to `emacs-version'. (default 'emacs-version) + dotspacemacs-elpa-subdirectory 'emacs-version + + ;; One of `vim', `emacs' or `hybrid'. + ;; `hybrid' is like `vim' except that `insert state' is replaced by the + ;; `hybrid state' with `emacs' key bindings. The value can also be a list + ;; with `:variables' keyword (similar to layers). Check the editing styles + ;; section of the documentation for details on available variables. + ;; (default 'vim) + dotspacemacs-editing-style 'vim + + ;; If non-nil show the version string in the Spacemacs buffer. It will + ;; appear as (spacemacs version)@(emacs version) + ;; (default t) + dotspacemacs-startup-buffer-show-version t + + ;; Specify the startup banner. Default value is `official', it displays + ;; the official spacemacs logo. An integer value is the index of text + ;; banner, `random' chooses a random text banner in `core/banners' + ;; directory. A string value must be a path to an image format supported + ;; by your Emacs build. + ;; If the value is nil then no banner is displayed. (default 'official) + dotspacemacs-startup-banner 'official + + ;; List of items to show in startup buffer or an association list of + ;; the form `(list-type . list-size)`. If nil then it is disabled. + ;; Possible values for list-type are: + ;; `recents' `recents-by-project' `bookmarks' `projects' `agenda' `todos'. + ;; List sizes may be nil, in which case + ;; `spacemacs-buffer-startup-lists-length' takes effect. + ;; The exceptional case is `recents-by-project', where list-type must be a + ;; pair of numbers, e.g. `(recents-by-project . (7 . 5))', where the first + ;; number is the project limit and the second the limit on the recent files + ;; within a project. + dotspacemacs-startup-lists '((recents . 5) + (projects . 7)) + + ;; True if the home buffer should respond to resize events. (default t) + dotspacemacs-startup-buffer-responsive t + + ;; Show numbers before the startup list lines. (default t) + dotspacemacs-show-startup-list-numbers t + + ;; The minimum delay in seconds between number key presses. (default 0.4) + dotspacemacs-startup-buffer-multi-digit-delay 0.4 + + ;; If non-nil, show file icons for entries and headings on Spacemacs home buffer. + ;; This has no effect in terminal or if "all-the-icons" package or the font + ;; is not installed. (default nil) + dotspacemacs-startup-buffer-show-icons nil + + ;; Default major mode for a new empty buffer. Possible values are mode + ;; names such as `text-mode'; and `nil' to use Fundamental mode. + ;; (default `text-mode') + dotspacemacs-new-empty-buffer-major-mode 'text-mode + + ;; Default major mode of the scratch buffer (default `text-mode') + dotspacemacs-scratch-mode 'text-mode + + ;; If non-nil, *scratch* buffer will be persistent. Things you write down in + ;; *scratch* buffer will be saved and restored automatically. + dotspacemacs-scratch-buffer-persistent nil + + ;; If non-nil, `kill-buffer' on *scratch* buffer + ;; will bury it instead of killing. + dotspacemacs-scratch-buffer-unkillable nil + + ;; Initial message in the scratch buffer, such as "Welcome to Spacemacs!" + ;; (default nil) + dotspacemacs-initial-scratch-message nil + + ;; List of themes, the first of the list is loaded when spacemacs starts. + ;; Press `SPC T n' to cycle to the next theme in the list (works great + ;; with 2 themes variants, one dark and one light) + dotspacemacs-themes '(spacemacs-dark + spacemacs-light) + + ;; Set the theme for the Spaceline. Supported themes are `spacemacs', + ;; `all-the-icons', `custom', `doom', `vim-powerline' and `vanilla'. The + ;; first three are spaceline themes. `doom' is the doom-emacs mode-line. + ;; `vanilla' is default Emacs mode-line. `custom' is a user defined themes, + ;; refer to the DOCUMENTATION.org for more info on how to create your own + ;; spaceline theme. Value can be a symbol or list with additional properties. + ;; (default '(spacemacs :separator wave :separator-scale 1.5)) + dotspacemacs-mode-line-theme '(spacemacs :separator wave :separator-scale 1.5) + + ;; If non-nil the cursor color matches the state color in GUI Emacs. + ;; (default t) + dotspacemacs-colorize-cursor-according-to-state t + + ;; Default font or prioritized list of fonts. The `:size' can be specified as + ;; a non-negative integer (pixel size), or a floating-point (point size). + ;; Point size is recommended, because it's device independent. (default 10.0) + dotspacemacs-default-font '("Source Code Pro" + :size 11.0 + :weight normal + :width normal) + + ;; The leader key (default "SPC") + dotspacemacs-leader-key "SPC" + + ;; The key used for Emacs commands `M-x' (after pressing on the leader key). + ;; (default "SPC") + dotspacemacs-emacs-command-key "SPC" + + ;; The key used for Vim Ex commands (default ":") + dotspacemacs-ex-command-key ":" + + ;; The leader key accessible in `emacs state' and `insert state' + ;; (default "M-m") + dotspacemacs-emacs-leader-key "M-m" + + ;; Major mode leader key is a shortcut key which is the equivalent of + ;; pressing ` m`. Set it to `nil` to disable it. (default ",") + dotspacemacs-major-mode-leader-key "," + + ;; Major mode leader key accessible in `emacs state' and `insert state'. + ;; (default "C-M-m" for terminal mode, "" for GUI mode). + ;; Thus M-RET should work as leader key in both GUI and terminal modes. + ;; C-M-m also should work in terminal mode, but not in GUI mode. + dotspacemacs-major-mode-emacs-leader-key (if window-system "" "C-M-m") + + ;; These variables control whether separate commands are bound in the GUI to + ;; the key pairs `C-i', `TAB' and `C-m', `RET'. + ;; Setting it to a non-nil value, allows for separate commands under `C-i' + ;; and TAB or `C-m' and `RET'. + ;; In the terminal, these pairs are generally indistinguishable, so this only + ;; works in the GUI. (default nil) + dotspacemacs-distinguish-gui-tab nil + + ;; Name of the default layout (default "Default") + dotspacemacs-default-layout-name "Default" + + ;; If non-nil the default layout name is displayed in the mode-line. + ;; (default nil) + dotspacemacs-display-default-layout nil + + ;; If non-nil then the last auto saved layouts are resumed automatically upon + ;; start. (default nil) + dotspacemacs-auto-resume-layouts nil + + ;; If non-nil, auto-generate layout name when creating new layouts. Only has + ;; effect when using the "jump to layout by number" commands. (default nil) + dotspacemacs-auto-generate-layout-names nil + + ;; Size (in MB) above which spacemacs will prompt to open the large file + ;; literally to avoid performance issues. Opening a file literally means that + ;; no major mode or minor modes are active. (default is 1) + dotspacemacs-large-file-size 1 + + ;; Location where to auto-save files. Possible values are `original' to + ;; auto-save the file in-place, `cache' to auto-save the file to another + ;; file stored in the cache directory and `nil' to disable auto-saving. + ;; (default 'cache) + dotspacemacs-auto-save-file-location 'cache + + ;; Maximum number of rollback slots to keep in the cache. (default 5) + dotspacemacs-max-rollback-slots 5 + + ;; If non-nil, the paste transient-state is enabled. While enabled, after you + ;; paste something, pressing `C-j' and `C-k' several times cycles through the + ;; elements in the `kill-ring'. (default nil) + dotspacemacs-enable-paste-transient-state nil + + ;; Which-key delay in seconds. The which-key buffer is the popup listing + ;; the commands bound to the current keystroke sequence. (default 0.4) + dotspacemacs-which-key-delay 0.4 + + ;; Which-key frame position. Possible values are `right', `bottom' and + ;; `right-then-bottom'. right-then-bottom tries to display the frame to the + ;; right; if there is insufficient space it displays it at the bottom. + ;; (default 'bottom) + dotspacemacs-which-key-position 'bottom + + ;; Control where `switch-to-buffer' displays the buffer. If nil, + ;; `switch-to-buffer' displays the buffer in the current window even if + ;; another same-purpose window is available. If non-nil, `switch-to-buffer' + ;; displays the buffer in a same-purpose window even if the buffer can be + ;; displayed in the current window. (default nil) + dotspacemacs-switch-to-buffer-prefers-purpose nil + + ;; If non-nil a progress bar is displayed when spacemacs is loading. This + ;; may increase the boot time on some systems and emacs builds, set it to + ;; nil to boost the loading time. (default t) + dotspacemacs-loading-progress-bar t + + ;; If non-nil the frame is fullscreen when Emacs starts up. (default nil) + ;; (Emacs 24.4+ only) + dotspacemacs-fullscreen-at-startup nil + + ;; If non-nil `spacemacs/toggle-fullscreen' will not use native fullscreen. + ;; Use to disable fullscreen animations in OSX. (default nil) + dotspacemacs-fullscreen-use-non-native nil + + ;; If non-nil the frame is maximized when Emacs starts up. + ;; Takes effect only if `dotspacemacs-fullscreen-at-startup' is nil. + ;; (default nil) (Emacs 24.4+ only) + dotspacemacs-maximized-at-startup nil + + ;; If non-nil the frame is undecorated when Emacs starts up. Combine this + ;; variable with `dotspacemacs-maximized-at-startup' in OSX to obtain + ;; borderless fullscreen. (default nil) + dotspacemacs-undecorated-at-startup nil + + ;; A value from the range (0..100), in increasing opacity, which describes + ;; the transparency level of a frame when it's active or selected. + ;; Transparency can be toggled through `toggle-transparency'. (default 90) + dotspacemacs-active-transparency 90 + + ;; A value from the range (0..100), in increasing opacity, which describes + ;; the transparency level of a frame when it's inactive or deselected. + ;; Transparency can be toggled through `toggle-transparency'. (default 90) + dotspacemacs-inactive-transparency 90 + + ;; If non-nil show the titles of transient states. (default t) + dotspacemacs-show-transient-state-title t + + ;; If non-nil show the color guide hint for transient state keys. (default t) + dotspacemacs-show-transient-state-color-guide t + + ;; If non-nil unicode symbols are displayed in the mode line. + ;; If you use Emacs as a daemon and wants unicode characters only in GUI set + ;; the value to quoted `display-graphic-p'. (default t) + dotspacemacs-mode-line-unicode-symbols t + + ;; If non-nil smooth scrolling (native-scrolling) is enabled. Smooth + ;; scrolling overrides the default behavior of Emacs which recenters point + ;; when it reaches the top or bottom of the screen. (default t) + dotspacemacs-smooth-scrolling t + + ;; Show the scroll bar while scrolling. The auto hide time can be configured + ;; by setting this variable to a number. (default t) + dotspacemacs-scroll-bar-while-scrolling t + + ;; Control line numbers activation. + ;; If set to `t', `relative' or `visual' then line numbers are enabled in all + ;; `prog-mode' and `text-mode' derivatives. If set to `relative', line + ;; numbers are relative. If set to `visual', line numbers are also relative, + ;; but only visual lines are counted. For example, folded lines will not be + ;; counted and wrapped lines are counted as multiple lines. + ;; This variable can also be set to a property list for finer control: + ;; '(:relative nil + ;; :visual nil + ;; :disabled-for-modes dired-mode + ;; doc-view-mode + ;; markdown-mode + ;; org-mode + ;; pdf-view-mode + ;; text-mode + ;; :size-limit-kb 1000) + ;; When used in a plist, `visual' takes precedence over `relative'. + ;; (default nil) + dotspacemacs-line-numbers nil + + ;; Code folding method. Possible values are `evil', `origami' and `vimish'. + ;; (default 'evil) + dotspacemacs-folding-method 'evil + + ;; If non-nil and `dotspacemacs-activate-smartparens-mode' is also non-nil, + ;; `smartparens-strict-mode' will be enabled in programming modes. + ;; (default nil) + dotspacemacs-smartparens-strict-mode nil + + ;; If non-nil smartparens-mode will be enabled in programming modes. + ;; (default t) + dotspacemacs-activate-smartparens-mode t + + ;; If non-nil pressing the closing parenthesis `)' key in insert mode passes + ;; over any automatically added closing parenthesis, bracket, quote, etc... + ;; This can be temporary disabled by pressing `C-q' before `)'. (default nil) + dotspacemacs-smart-closing-parenthesis nil + + ;; Select a scope to highlight delimiters. Possible values are `any', + ;; `current', `all' or `nil'. Default is `all' (highlight any scope and + ;; emphasis the current one). (default 'all) + dotspacemacs-highlight-delimiters 'all + + ;; If non-nil, start an Emacs server if one is not already running. + ;; (default nil) + dotspacemacs-enable-server nil + + ;; Set the emacs server socket location. + ;; If nil, uses whatever the Emacs default is, otherwise a directory path + ;; like \"~/.emacs.d/server\". It has no effect if + ;; `dotspacemacs-enable-server' is nil. + ;; (default nil) + dotspacemacs-server-socket-dir nil + + ;; If non-nil, advise quit functions to keep server open when quitting. + ;; (default nil) + dotspacemacs-persistent-server nil + + ;; List of search tool executable names. Spacemacs uses the first installed + ;; tool of the list. Supported tools are `rg', `ag', `pt', `ack' and `grep'. + ;; (default '("rg" "ag" "pt" "ack" "grep")) + dotspacemacs-search-tools '("rg" "ag" "pt" "ack" "grep") + + ;; Format specification for setting the frame title. + ;; %a - the `abbreviated-file-name', or `buffer-name' + ;; %t - `projectile-project-name' + ;; %I - `invocation-name' + ;; %S - `system-name' + ;; %U - contents of $USER + ;; %b - buffer name + ;; %f - visited file name + ;; %F - frame name + ;; %s - process status + ;; %p - percent of buffer above top of window, or Top, Bot or All + ;; %P - percent of buffer above bottom of window, perhaps plus Top, or Bot or All + ;; %m - mode name + ;; %n - Narrow if appropriate + ;; %z - mnemonics of buffer, terminal, and keyboard coding systems + ;; %Z - like %z, but including the end-of-line format + ;; If nil then Spacemacs uses default `frame-title-format' to avoid + ;; performance issues, instead of calculating the frame title by + ;; `spacemacs/title-prepare' all the time. + ;; (default "%I@%S") + dotspacemacs-frame-title-format "%I@%S" + + ;; Format specification for setting the icon title format + ;; (default nil - same as frame-title-format) + dotspacemacs-icon-title-format nil + + ;; Show trailing whitespace (default t) + dotspacemacs-show-trailing-whitespace t + + ;; Delete whitespace while saving buffer. Possible values are `all' + ;; to aggressively delete empty line and long sequences of whitespace, + ;; `trailing' to delete only the whitespace at end of lines, `changed' to + ;; delete only whitespace for changed lines or `nil' to disable cleanup. + ;; (default nil) + dotspacemacs-whitespace-cleanup nil + + ;; If non-nil activate `clean-aindent-mode' which tries to correct + ;; virtual indentation of simple modes. This can interfere with mode specific + ;; indent handling like has been reported for `go-mode'. + ;; If it does deactivate it here. + ;; (default t) + dotspacemacs-use-clean-aindent-mode t + + ;; Accept SPC as y for prompts if non-nil. (default nil) + dotspacemacs-use-SPC-as-y nil + + ;; If non-nil shift your number row to match the entered keyboard layout + ;; (only in insert state). Currently supported keyboard layouts are: + ;; `qwerty-us', `qwertz-de' and `querty-ca-fr'. + ;; New layouts can be added in `spacemacs-editing' layer. + ;; (default nil) + dotspacemacs-swap-number-row nil + + ;; Either nil or a number of seconds. If non-nil zone out after the specified + ;; number of seconds. (default nil) + dotspacemacs-zone-out-when-idle nil + + ;; Run `spacemacs/prettify-org-buffer' when + ;; visiting README.org files of Spacemacs. + ;; (default nil) + dotspacemacs-pretty-docs nil + + ;; If nil the home buffer shows the full path of agenda items + ;; and todos. If non-nil only the file name is shown. + dotspacemacs-home-shorten-agenda-source nil + + ;; If non-nil then byte-compile some of Spacemacs files. + dotspacemacs-byte-compile nil)) + +(defun dotspacemacs/user-env () + "Environment variables setup. +This function defines the environment variables for your Emacs session. By +default it calls `spacemacs/load-spacemacs-env' which loads the environment +variables declared in `~/.spacemacs.env' or `~/.spacemacs.d/.spacemacs.env'. +See the header of this file for more information." + (spacemacs/load-spacemacs-env) + ) + +(defun dotspacemacs/user-init () + "Initialization for user code: +This function is called immediately after `dotspacemacs/init', before layer +configuration. +It is mostly for variables that should be set before packages are loaded. +If you are unsure, try setting them in `dotspacemacs/user-config' first." + ) + + +(defun dotspacemacs/user-load () + "Library to load while dumping. +This function is called only while dumping Spacemacs configuration. You can +`require' or `load' the libraries of your choice that will be included in the +dump." + ) + + +(defun dotspacemacs/user-config () + "Configuration for user code: +This function is called at the very end of Spacemacs startup, after layer +configuration. +Put your configuration code here, except for variables that should be set +before packages are loaded." + (setq rust-format-on-save t) + ;; (global-set-key (kbd "M-1") 'evil-jump-forward) + ;; (setq centaur-tabs-show-count t) + (define-key winum-keymap (kbd "M-1") 'tab-bar-switch-to-tab) + ;; (evil-define-key '(normal) nil (kbd "C-i") 'evil-jump-forward) + (define-key evil-motion-state-map (kbd "C-i") 'evil-jump-forward) + (evil-define-key* '(normal insert visual) 'global (kbd "C-s") 'escape-and-save) + (evil-define-key* '(normal visual) 'global (kbd "gD") 'lsp-find-references) + + (global-set-key (kbd "C--") 'spacemacs/scale-down-font) + (global-set-key (kbd "C-+") 'spacemacs/scale-up-font) + (global-set-key (kbd "C-=") 'spacemacs/reset-font-size) + + (spacemacs/set-leader-keys "." 'lazy-helm/spacemacs/helm-find-files) + (spacemacs/set-leader-keys ":" 'helm-projectile-find-file) + (spacemacs/declare-prefix "o" "open external") + (spacemacs/set-leader-keys "ot" 'open-external-terminal) + + (spacemacs/set-leader-keys "gg" 'magit-status) + (spacemacs/set-leader-keys "ee" 'flycheck-explain-error-at-point) + ;; (spacemacs/set-leader-keys "br" '(revert-buffer nil nil)) + + (setq evil-escape-key-sequence "kj") + + (defun open-external-terminal () + "Open external terminal" + (interactive) + (call-process-shell-command "alacritty&" nil 0)) + + (defun escape-and-save() + "Evil escape and then save buffer" + (interactive) + (evil-escape) + (condition-case nil + (format-all-buffer) + (error nil)) + (save-buffer)) + + ) + +;; Do not write anything past this comment. This is where Emacs will +;; auto-generate custom variable definitions. +(defun dotspacemacs/emacs-custom-settings () + "Emacs custom settings. +This is an auto-generated function, do not modify its content directly, use +Emacs customize menu instead. +This function is called at the very end of Spacemacs initialization." +(custom-set-variables + ;; custom-set-variables was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + '(evil-want-Y-yank-to-eol nil) + '(org-babel-load-languages '((csharp . t) (emacs-lisp))) + '(package-selected-packages + '(csv-mode yapfify sphinx-doc pytest pyenv-mode pydoc py-isort poetry pippel pipenv pyvenv pip-requirements nose lsp-python-ms lsp-pyright live-py-mode importmagic epc ctable concurrent deferred helm-pydoc helm-cscope xcscope cython-mode company-anaconda blacken anaconda-mode pythonic evil-snipe omnisharp csharp-mode web-beautify prettier-js json-reformat json-navigator hierarchy json-mode json-snatcher format-all language-id inheritenv company-quickhelp stickyfunc-enhance srefactor yasnippet-snippets treemacs-magit smeargle orgit-forge orgit org-rich-yank org-projectile org-category-capture org-present org-pomodoro alert log4e gntp org-mime org-download org-contrib org-cliplink org lsp-ui lsp-origami origami htmlize helm-org-rifle helm-lsp helm-git-grep helm-company helm-c-yasnippet gnuplot gitignore-templates git-timemachine git-modes git-messenger git-link fuzzy forge yaml magit ghub closql emacsql-sqlite emacsql treepy magit-section git-commit with-editor transient flyspell-correct-helm flyspell-correct flycheck-pos-tip evil-org centaur-tabs auto-yasnippet yasnippet auto-dictionary ac-ispell auto-complete toml-mode ron-mode racer pos-tip rust-mode helm-gtags ggtags flycheck-rust dap-mode lsp-treemacs bui lsp-mode counsel-gtags counsel swiper ivy company cargo markdown-mode ws-butler writeroom-mode winum which-key volatile-highlights vi-tilde-fringe uuidgen use-package undo-tree treemacs-projectile treemacs-persp treemacs-icons-dired treemacs-evil toc-org symon symbol-overlay string-inflection string-edit spaceline-all-the-icons restart-emacs request rainbow-delimiters quickrun popwin pcre2el password-generator paradox overseer org-superstar open-junk-file nameless multi-line macrostep lorem-ipsum link-hint inspector info+ indent-guide hybrid-mode hungry-delete hl-todo highlight-parentheses highlight-numbers highlight-indentation hide-comnt helm-xref helm-themes helm-swoop helm-purpose helm-projectile helm-org helm-mode-manager helm-make helm-ls-git helm-flx helm-descbinds helm-ag google-translate golden-ratio font-lock+ flycheck-package flycheck-elsa flx-ido fancy-battery eyebrowse expand-region evil-visualstar evil-visual-mark-mode evil-unimpaired evil-tutor evil-textobj-line evil-terminal-cursor-changer evil-surround evil-numbers evil-nerd-commenter evil-mc evil-matchit evil-lisp-state evil-lion evil-indent-plus evil-iedit-state evil-goggles evil-exchange evil-escape evil-ediff evil-easymotion evil-collection evil-cleverparens evil-args evil-anzu eval-sexp-fu emr elisp-slime-nav elisp-def editorconfig dumb-jump drag-stuff dotenv-mode dired-quick-sort diminish devdocs define-word column-enforce-mode clean-aindent-mode centered-cursor-mode auto-highlight-symbol auto-compile aggressive-indent ace-link ace-jump-helm-line))) +(custom-set-faces + ;; custom-set-faces was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + '(highlight-parentheses-highlight ((nil (:weight ultra-bold))) t)) +) diff --git a/i3/.config/dunst/dunstrc b/i3/dunst/dunstrc similarity index 100% rename from i3/.config/dunst/dunstrc rename to i3/dunst/dunstrc diff --git a/i3/.config/i3-scrot.conf b/i3/i3-scrot.conf similarity index 100% rename from i3/.config/i3-scrot.conf rename to i3/i3-scrot.conf diff --git a/i3/.config/i3/config b/i3/i3/config similarity index 65% rename from i3/.config/i3/config rename to i3/i3/config index 2582cee..961ad56 100644 --- a/i3/.config/i3/config +++ b/i3/i3/config @@ -11,21 +11,18 @@ set $mod Mod4 set $scripts ~/.config/i3/scripts +set $lock "i3lock --ignore-empty-password --color=000000" -# Font for window titles. Will also be used by the bar unless a different font -# is used in the bar {} block below. -font pango:monospace 12 +# Font for window titles +font pango:FuraCode Nerd Font 12 # This font is widely installed, provides lots of unicode glyphs, right-to-left # text rendering and scalability on retina/hidpi displays (thanks to pango). #font pango:DejaVu Sans Mono 12 -# The combination of xss-lock, nm-applet and pactl is a popular choice, so -# they are included here as an example. Modify as you see fit. - -# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the +# xss-lock grabs a logind suspend inhibit lock and will use $lock to lock the # screen before suspend. Use loginctl lock-session to lock your screen. -exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork +exec --no-startup-id xss-lock --transfer-sleep-lock -- $lock --nofork # NetworkManager is the most popular way to manage wireless networks on Linux, # and nm-applet is a desktop environment-independent system tray GUI for it. @@ -43,7 +40,8 @@ bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOU floating_modifier $mod # start a terminal -bindsym $mod+Return exec xfce4-terminal +# bindsym $mod+Return exec xfce4-terminal +bindsym $mod+Return exec alacritty # kill focused window bindsym $mod+Shift+q kill @@ -55,6 +53,7 @@ bindsym Mod1+F4 kill # start dmenu (a program launcher) bindsym $mod+d exec rofi -show run #dmenu_recency -i +# bindsym $mod exec rofi -show run #dmenu_recency -i # There also is the (new) i3-dmenu-desktop which only displays applications # shipping a .desktop file. It is a wrapper around dmenu, so you need that # installed. @@ -73,30 +72,28 @@ bindsym $mod+Up focus up bindsym $mod+Right focus right # move focused window -bindsym $mod+Shift+h move left -bindsym $mod+Shift+j move down -bindsym $mod+Shift+k move up -bindsym $mod+Shift+l move right +bindsym $mod+Shift+h exec i3l move left +bindsym $mod+Shift+j exec i3l move down +bindsym $mod+Shift+k exec i3l move up +bindsym $mod+Shift+l exec i3l move right # alternatively, you can use the cursor 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 +bindsym $mod+Shift+Left exec i3l move left +bindsym $mod+Shift+Down exec i3l move down +bindsym $mod+Shift+Up exec i3l move up +bindsym $mod+Shift+Right exec i3l move right -# split in horizontal orientation -bindsym $mod+Shift+v split h - -# split in vertical orientation -bindsym $mod+v split v +# split in horizontal / vertical orientation +# bindsym $mod+Shift+v split h +# bindsym $mod+v split v # enter fullscreen mode for the focused container bindsym $mod+f fullscreen toggle # change container layout (stacked, tabbed, toggle split) -bindsym $mod+Shift+w layout stacking -bindsym $mod+w layout tabbed -bindsym $mod+e layout toggle split +# bindsym $mod+Shift+w layout stacking +# bindsym $mod+w layout tabbed +# bindsym $mod+e layout toggle split # toggle tiling / floating bindsym $mod+Shift+space floating toggle @@ -105,11 +102,14 @@ bindsym $mod+Shift+space floating toggle bindsym $mod+space focus mode_toggle # focus the parent container -bindsym $mod+a focus parent +# bindsym $mod+a focus parent # focus the child container #bindsym $mod+d focus child +# The middle button over a titlebar kills the window +bindsym --release button2 kill + # Define names for default workspaces for which we configure key bindings later on. # We use variables to avoid repeating the names in multiple places. set $ws1 "1" @@ -123,6 +123,17 @@ set $ws8 "8" set $ws9 "9" set $ws10 "10" +set $i3l vstack to workspace $ws1 +set $i3l vstack to workspace $ws2 +set $i3l vstack to workspace $ws3 +set $i3l vstack to workspace $ws4 +set $i3l vstack to workspace $ws5 +set $i3l vstack to workspace $ws6 +set $i3l vstack to workspace $ws7 +set $i3l vstack to workspace $ws8 +set $i3l vstack to workspace $ws9 +set $i3l vstack to workspace $ws10 + # switch to workspace bindsym $mod+1 workspace number $ws1 bindsym $mod+2 workspace number $ws2 @@ -210,17 +221,17 @@ bindsym $mod+r mode "resize" # Start i3bar to display a workspace bar (plus the system information i3status # finds out, if available) -bar { - status_command i3blocks - tray_output $monitor_left - position top - i3bar_command i3bar --transparency -} +#bar { +# status_command i3blocks +# position bottom +# i3bar_command i3bar --transparency +# bindsym button3 exec --no-startup-id jgmenu_run +#} set $mode_system System (l) lock, (e) logout, (r) reboot, (s) shutdown mode "$mode_system" { - bindsym l exec --no-startup-id i3lock, mode "default" + bindsym l exec --no-startup-id $lock, mode "default" bindsym e exec --no-startup-id i3exit logout, mode "default" bindsym r exec --no-startup-id i3exit reboot, mode "default" bindsym s exec --no-startup-id i3exit shutdown, mode "default" @@ -255,22 +266,65 @@ mode "$mode_screenshot_clipboard" { } bindsym $mod+Print mode "$mode_screenshot_clipboard" -bindsym $mod+Ctrl+Right move workspace to output right -bindsym $mod+Ctrl+Left move workspace to output right +set $mode_choose_layout Layout (h) vstack-left, (l) vstack-right, (k) hstack-top, (j) hstack-bottom, (c) 2columns +mode "$mode_choose_layout" { + bindsym h exec i3l vstack 0.5 right, mode "default" + bindsym l exec i3l vstack 0.5 left, mode "default" + bindsym j exec i3l hstack 0.5 up, mode "default" + bindsym k exec i3l hstack 0.5 down, mode "default" + bindsym c exec i3l 2columns left, mode "default" -bindsym $mod+c exec xfce4-terminal --role floating --hide-scrollbar --title Calculator -e qalc -bindsym $mod+p exec xwacomcalibrate -bindsym $mod+t exec thunar -bindsym $mod+m exec xfce4-terminal -x mc + # back to normal: Escape + bindsym Escape mode "default" +} +bindsym $mod+G mode "$mode_choose_layout" + +bindsym $mod+Ctrl+h exec i3l vstack 0.5 right, mode "default" +bindsym $mod+Ctrl+l exec i3l vstack 0.5 left, mode "default" +bindsym $mod+Ctrl+j exec i3l hstack 0.5 up, mode "default" +bindsym $mod+Ctrl+k exec i3l hstack 0.5 down, mode "default" + +bindsym $mod+Ctrl+Left exec i3l vstack 0.5 right, mode "default" +bindsym $mod+Ctrl+Right exec i3l vstack 0.5 left, mode "default" +bindsym $mod+Ctrl+Down exec i3l hstack 0.5 up, mode "default" +bindsym $mod+Ctrl+Up exec i3l hstack 0.5 down, mode "default" + +#bindsym $mod+Ctrl+Right move workspace to output right +#bindsym $mod+Ctrl+Left move workspace to output right + +#bindsym $mod+c exec xfce4-terminal --role floating --hide-scrollbar --title Calculator -e qalc +bindsym $mod+c exec qalculate-gtk +# bindsym $mod+p exec xwacomcalibrate +# bindsym $mod+t exec thunar +bindsym $mod+t exec krusader +#bindsym $mod+m exec xfce4-terminal -x mc bindsym $mod+Shift+c exec $scripts/jupyter-calculator bindsym $mod+b exec firefox -bindsym $mod+s exec pavucontrol +#bindsym $mod+s exec pavucontrol bindsym $mod+u exec pamac-manager +bindsym $mod+p [con_mark="i3l::previous"] focus +bindsym $mod+m [con_mark="i3l:[^:]+:main" workspace="__focused__"] focus +# bindsym $mod+Shift+m [con_mark="i3l:[^:]+:main" workspace="__focused__"] focus; exec i3l swap container with mark "i3l::previous" +#exec $scripts/i3l-swap-master +# bindsym $mod+Shift+m exec i3l [con_mark="i3l:[^:]+:main" workspace="__focused__"] swap container with mark "i3l::current" +# bindsym $mod+Shift+m exec i3l swap container with mark "__focused__:main" + +# read 1 character and mark the current window with this character +# bindsym $mod+m exec i3-input -F 'mark %s' -l 1 -P 'Mark: ' +# read 1 character and go to the window with the character +# bindsym $mod+Shift+m exec i3-input -F '[con_mark="%s"] focus' -l 1 -P 'Goto: ' + workspace_auto_back_and_forth yes -default_border pixel +# default_border pixel +default_border normal default_floating_border normal +hide_edge_borders smart + +show_marks no + +focus_on_window_activation smart assign [class="firefox" title="Mozilla Firefox$"] workspace $ws1 assign [class="TelegramDesktop"] workspace $ws9 @@ -280,22 +334,25 @@ assign [class="Element"] workspace $ws9 assign [class="Thunderbird"] workspace $ws10 assign [class="zoom"] workspace $ws5 -for_window [class="firefox"] focus +for_window [class="firefox" urgent="latest"] focus #for_window [class="Thunderbird"] focus -for_window [class="TelegramDesktop"] no_focus -for_window [class="Rocket.Chat"] no_focus -for_window [class="Element"] no_focus +#for_window [class="TelegramDesktop"] no_focus +#for_window [class="Rocket.Chat"] no_focus +#for_window [class="Element"] no_focus #for_window [class="Thunderbird"] focus for_window [title="Manjaro Settings Manager"] floating enable for_window [class="Pamac-manager"] floating enable for_window [class="Pamac-updater"] floating enable +for_window [class="Qalculate-gtk"] floating enable #for_window [class="zoom" title="Chat"] floating enable #for_window [class="Thunderbird" instance="Msgcompose"] floating enable # for_window [window_role=floating] floating enable +for_window [class="Viewnior"] border normal + ########## Autostart applications ########## # exec --no-startup-id "i3-msg 'workspace 9; append_layout ~/.config/i3/workspace-chat.json'" @@ -305,24 +362,42 @@ exec firefox # exec element-desktop no_focus # exec telegram-desktop no_focus +#exec firefox +#exec thunderbird +#exec chat.rocket.RocketChat no_focus +#exec element-desktop no_focus +#exec telegram-desktop no_focus + +exec_always --no-startup-id i3-layouts +# Rightclick menu +exec_always --no-startup-id ~/.config/polybar/startup.sh +exec --no-startup-id jgmenu --at-pointer --hide-on-startup exec --no-startup-id nm-applet +exec --no-startup-id blueman-applet exec --no-startup-id xfce4-power-manager # exec --no-startup-id nextcloud # Authentication agent exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 # Notify about software updates -exec --no-startup-id pamac-tray +# exec --no-startup-id pamac-tray # Notify about kernel updates -exec --no-startup-id msm_notifier +# exec --no-startup-id msm_notifier # Audio exec --no-startup-id start-pulseaudio-x11 # Background #exec --no-startup-id feh --randomize --bg-fill /home/julian/Pictures/Hintergrundbilder/* -exec --no-startup-id feh --bg-fill /home/julian/Pictures/Hintergrundbilder/space.jpg +exec --no-startup-id feh --bg-fill /home/julian/Bilder/background.jpg # Notifications -exec --no-startup-id dunst -config /home/julian/.config/dunst/dunstrc +# exec --no-startup-id dunst -config /home/julian/.config/dunst/dunstrc +exec --no-startup-id /usr/lib/xfce4/notifyd/xfce4-notifyd # Default workspaces at startup (no need because autostart applications get always focused) #exec --no-startup-id i3-msg workspace $ws1 -# exec --no-startup-id i3-msg workspace $ws10 +#exec --no-startup-id i3-msg workspace $ws10 +#bindsym $mod+Ctrl+q exec i3l 'vstack right' && notify-send 'Layout vstack right' +#bindsym $mod+Ctrl+w exec i3l 'vstack left' && notify-send 'Layout vstack left' +#bindsym $mod+Ctrl+e exec 'i3l hstack down' && notify-send 'Layout hstack down' +#bindsym $mod+Ctrl+r exec 'i3l hstack up' && notify-send 'Layout hstack up' +#bindsym $mod+Ctrl+t exec i3l 3columns right && notify-send 'Layout 3columns' +#bindsym $mod+Ctrl+z exec i3l 2columns left && notify-send 'Layout 2columns' diff --git a/i3/.config/i3/manjaro-default-config b/i3/i3/manjaro-default-config similarity index 100% rename from i3/.config/i3/manjaro-default-config rename to i3/i3/manjaro-default-config diff --git a/i3/.config/i3/scripts/jupyter-calculator b/i3/i3/scripts/jupyter-calculator similarity index 100% rename from i3/.config/i3/scripts/jupyter-calculator rename to i3/i3/scripts/jupyter-calculator diff --git a/i3/.config/i3/scripts/rofi_calc b/i3/i3/scripts/rofi_calc similarity index 100% rename from i3/.config/i3/scripts/rofi_calc rename to i3/i3/scripts/rofi_calc diff --git a/i3/.config/i3/scripts/setupZoom b/i3/i3/scripts/setupZoom similarity index 100% rename from i3/.config/i3/scripts/setupZoom rename to i3/i3/scripts/setupZoom diff --git a/i3/.config/i3/workspace-chat.json b/i3/i3/workspace-chat.json similarity index 100% rename from i3/.config/i3/workspace-chat.json rename to i3/i3/workspace-chat.json diff --git a/i3/.config/i3/workspace-zoom.json b/i3/i3/workspace-zoom.json similarity index 100% rename from i3/.config/i3/workspace-zoom.json rename to i3/i3/workspace-zoom.json diff --git a/i3/.config/i3blocks/activity b/i3/i3blocks/activity similarity index 100% rename from i3/.config/i3blocks/activity rename to i3/i3blocks/activity diff --git a/i3/.config/i3blocks/calendar b/i3/i3blocks/calendar similarity index 100% rename from i3/.config/i3blocks/calendar rename to i3/i3blocks/calendar diff --git a/i3/.config/i3blocks/config b/i3/i3blocks/config similarity index 100% rename from i3/.config/i3blocks/config rename to i3/i3blocks/config diff --git a/i3/.config/i3blocks/dunst b/i3/i3blocks/dunst similarity index 100% rename from i3/.config/i3blocks/dunst rename to i3/i3blocks/dunst diff --git a/i3/.config/i3blocks/i3b-gate b/i3/i3blocks/i3b-gate similarity index 100% rename from i3/.config/i3blocks/i3b-gate rename to i3/i3blocks/i3b-gate diff --git a/i3/.config/i3blocks/keyboard b/i3/i3blocks/keyboard similarity index 100% rename from i3/.config/i3blocks/keyboard rename to i3/i3blocks/keyboard diff --git a/i3/.config/i3blocks/volume b/i3/i3blocks/volume similarity index 100% rename from i3/.config/i3blocks/volume rename to i3/i3blocks/volume diff --git a/i3/.config/rofi/config.rasi b/i3/rofi/config.rasi similarity index 99% rename from i3/.config/rofi/config.rasi rename to i3/rofi/config.rasi index aa1b16a..dd3277a 100644 --- a/i3/.config/rofi/config.rasi +++ b/i3/rofi/config.rasi @@ -152,13 +152,12 @@ configuration { /* me-accept-custom: "Control+MouseDPrimary";*/ } - /*Dracula theme based on the Purple official rofi theme*/ * { font: "Jetbrains Mono 14"; foreground: #f8f8f2; - background-color: #282a36; + background: #282a36; active-background: #6272a4; urgent-background: #ff5555; selected-background: @active-background; diff --git a/leftwm/config.toml b/leftwm/config.toml new file mode 100644 index 0000000..422bc40 --- /dev/null +++ b/leftwm/config.toml @@ -0,0 +1,376 @@ +modkey = "Mod4" +mousekey = "Mod4" +workspaces = [] +tags = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10" ] +layouts = [ + "MainAndVertStack", + "MainAndHorizontalStack", + # "MainAndDeck", + #"GridHorizontal", + # "EvenHorizontal", + # "EvenVertical", + # "Fibonacci", + # "LeftMain", + # "CenterMain", + # "CenterMainBalanced", + # "CenterMainFluid", + # "Monocle", + # "RightWiderLeftStack", + # "LeftWiderRightStack" +] +layout_mode = "Tag" +insert_behavior = "Bottom" +disable_current_tag_swap = false +disable_tile_drag = true +focus_behaviour = "Sloppy" +focus_new_windows = true +disable_window_snap = true +window_rules = [ + {window_class = "firefox", window_title = "Mozilla Firefox$", spawn_on_tag = 1}, + {window_class = "TelegramDesktop", spawn_on_tag = 9}, + {window_class = "Signal", spawn_on_tag = 9}, + {window_class = "Rocket.Chat", spawn_on_tag = 9}, + {window_class = "Element", spawn_on_tag = 9}, + {window_class = "Thunderbird", spawn_on_tag = 10}, + {window_class = "zoom", spawn_on_tag = 5}, + + # {window_title = "Manjaro Settings Manager", spawn_floating = true}, + # {window_class = "Pamac-manager", spawn_floating = true}, + # {window_class = "Pamac-updater", spawn_floating = true}, + # {window_class = "Qalculate-gtk", spawn_floating = true}, +] + +[[keybind]] +command = "SetLayout" +value = "Monocle" +modifier = ["modkey"] +key = "m" + +[[scratchpad]] +name = "calculator" +value = "qalculate-gtk" + +[[keybind]] +command = "ToggleScratchPad" +value = "calculator" +modifier = ["modkey"] +key = "c" + +[[keybind]] +command = "Execute" +value = "~/.config/leftwm/scripts/dzen_exit_menu.pl" +modifier = ["modkey", "Shift"] +key = "e" + +[[keybind]] +command = "Execute" +value = "firefox" +modifier = ["modkey"] +key = "b" + +[[keybind]] +command = "Execute" +value = "krusader" +modifier = ["modkey"] +key = "t" + +[[keybind]] +command = "Execute" +value = "rofi -show run #dmenu_recency -i" +modifier = ["modkey"] +key = "d" + +[[keybind]] +command = "Execute" +value = "alacritty" +modifier = ["modkey"] +key = "Return" + +[[keybind]] +command = "ToggleFullScreen" +value = "" +modifier = ["modkey"] +key = "f" + +[[keybind]] +command = "ToggleFloating" +value = "" +modifier = ["modkey", "Shift"] +key = "space" + +[[keybind]] +command = "CloseWindow" +value = "" +modifier = ["modkey"] +key = "q" + +[[keybind]] +command = "CloseWindow" +value = "" +modifier = ["modkey"] +key = "x" + +[[keybind]] +command ="SoftReload" +value = "" +modifier = ["modkey", "Shift"] +key = "r" + +#[[keybind]] +#command = "MoveToLastWorkspace" +#value = "" +#modifier = ["modkey", "Shift"] +#key = "w" + +#[[keybind]] +#command = "SwapTags" +#value = "" +#modifier = ["modkey"] +#key = "w" + +#[[keybind]] +#command = "MoveWindowUp" +#value = "" +#modifier = ["modkey", "Shift"] +#key = "k" + +#[[keybind]] +#command = "MoveWindowDown" +#value = "" +#modifier = ["modkey", "Shift"] +#key = "j" + +#[[keybind]] +#command = "MoveWindowTop" +#value = "" +#modifier = ["modkey", "Shift"] +#key = "Return" + +#[[keybind]] +#command = "FocusWindowUp" +#value = "" +#modifier = ["modkey"] +#key = "k" + +#[[keybind]] +#command = "FocusWindowDown" +#value = "" +#modifier = ["modkey"] +#key = "j" + +#[[keybind]] +#command = "NextLayout" +#value = "" +#modifier = ["modkey", "Control"] +#key = "k" + +#[[keybind]] +#command = "PreviousLayout" +#value = "" +#modifier = ["modkey", "Control"] +#key = "j" + +#[[keybind]] +#command = "FocusWorkspaceNext" +#value = "" +#modifier = ["modkey"] +#key = "l" + +#[[keybind]] +#command = "FocusWorkspacePrevious" +#value = "" +#modifier = ["modkey"] +#key = "h" + + +[[keybind]] +command = "FocusWindowUp" +value = "" +modifier = ["modkey"] +key = "Up" + +[[keybind]] +command = "FocusWindowDown" +value = "" +modifier = ["modkey"] +key = "Down" + +[[keybind]] +command = "FocusWindowTop" +value = "true" +modifier = ["modkey"] +key = "Left" + +[[keybind]] +command = "FocusWindowTop" +value = "true" +modifier = ["modkey"] +key = "Right" + +[[keybind]] +command = "MoveWindowUp" +value = "" +modifier = ["modkey", "Shift"] +key = "Up" + +[[keybind]] +command = "MoveWindowDown" +value = "" +modifier = ["modkey", "Shift"] +key = "Down" + +[[keybind]] +command = "MoveWindowTop" +value = "" +modifier = ["modkey", "Shift"] +key = "Left" + +[[keybind]] +command = "MoveWindowTop" +value = "" +modifier = ["modkey", "Shift"] +key = "Right" + +[[keybind]] +command = "NextLayout" +value = "" +modifier = ["modkey", "Control"] +key = "Up" + +[[keybind]] +command = "RotateTag" +value = "" +modifier = ["modkey", "Control"] +key = "Down" + +#[[keybind]] +#command = "FocusWorkspaceNext" +#value = "" +#modifier = ["modkey"] +#key = "Right" + +#[[keybind]] +#command = "FocusWorkspacePrevious" +#value = "" +#modifier = ["modkey"] +#key = "Left" + +[[keybind]] +command = "GotoTag" +value = "1" +modifier = ["modkey"] +key = "1" + +[[keybind]] +command = "GotoTag" +value = "2" +modifier = ["modkey"] +key = "2" + +[[keybind]] +command = "GotoTag" +value = "3" +modifier = ["modkey"] +key = "3" + +[[keybind]] +command = "GotoTag" +value = "4" +modifier = ["modkey"] +key = "4" + +[[keybind]] +command = "GotoTag" +value = "5" +modifier = ["modkey"] +key = "5" + +[[keybind]] +command = "GotoTag" +value = "6" +modifier = ["modkey"] +key = "6" + +[[keybind]] +command = "GotoTag" +value = "7" +modifier = ["modkey"] +key = "7" + +[[keybind]] +command = "GotoTag" +value = "8" +modifier = ["modkey"] +key = "8" + +[[keybind]] +command = "GotoTag" +value = "9" +modifier = ["modkey"] +key = "9" + +[[keybind]] +command = "GotoTag" +value = "10" +modifier = ["modkey"] +key = "0" + +[[keybind]] +command = "MoveToTag" +value = "1" +modifier = ["modkey", "Shift"] +key = "1" + +[[keybind]] +command = "MoveToTag" +value = "2" +modifier = ["modkey", "Shift"] +key = "2" + +[[keybind]] +command = "MoveToTag" +value = "3" +modifier = ["modkey", "Shift"] +key = "3" + +[[keybind]] +command = "MoveToTag" +value = "4" +modifier = ["modkey", "Shift"] +key = "4" + +[[keybind]] +command = "MoveToTag" +value = "5" +modifier = ["modkey", "Shift"] +key = "5" + +[[keybind]] +command = "MoveToTag" +value = "6" +modifier = ["modkey", "Shift"] +key = "6" + +[[keybind]] +command = "MoveToTag" +value = "7" +modifier = ["modkey", "Shift"] +key = "7" + +[[keybind]] +command = "MoveToTag" +value = "8" +modifier = ["modkey", "Shift"] +key = "8" + +[[keybind]] +command = "MoveToTag" +value = "9" +modifier = ["modkey", "Shift"] +key = "9" + +[[keybind]] +command = "MoveToTag" +value = "10" +modifier = ["modkey", "Shift"] +key = "0" diff --git a/leftwm/scripts/dzen_exit_menu.pl b/leftwm/scripts/dzen_exit_menu.pl new file mode 100755 index 0000000..3b713a5 --- /dev/null +++ b/leftwm/scripts/dzen_exit_menu.pl @@ -0,0 +1,21 @@ +#!/bin/perl +use strict; +use warnings; + +my $message="System (l) lock, (e) logout, (r) reboot, (s) shutdown"; +my $screen_height=1080; +my $message_height=34; + +my %actions; +$actions{"l"} = "i3lock --ignore-empty-password --color 000000"; +$actions{"e"} = "pkill leftwm"; +$actions{"r"} = "systemctl reboot"; +$actions{"s"} = "systemctl poweroff"; + +my @dzen_actions; +while ((my $key, my $action) = each (%actions)){ + push @dzen_actions, "key_$key=exit,exec:$action"; +} +my $joined_actions = join(";", @dzen_actions); +print "$joined_actions"; +`echo "$message" | dzen2 -h $message_height -p -y $screen_height -e "onstart=grabkeys;key_Escape=exit;key_Return=exit;button1=exit;$joined_actions"`; diff --git a/leftwm/themes.toml b/leftwm/themes.toml new file mode 100644 index 0000000..cb2160d --- /dev/null +++ b/leftwm/themes.toml @@ -0,0 +1,211 @@ +[[repos]] +url = "https://raw.githubusercontent.com/leftwm/leftwm-community-themes/master/known.toml" +name = "community" +definitions_version = 1 + +[[repos.themes]] +name = "Orange Forest" +repository = "https://github.com/PVautour/leftwm-theme-orange-forest/" +commit = "*" +version = "0.0.2" +leftwm_versions = "^0.3.0" +current = false + +[[repos.themes]] +name = "Coffee" +repository = "https://github.com/lex148/leftwm-coffee/" +commit = "*" +version = "0.0.1" +leftwm_versions = "<0.3.0" +current = false + +[[repos.themes]] +name = "Soothe" +repository = "https://github.com/b4skyx/leftwm-soothe/" +commit = "*" +version = "0.0.1" +leftwm_versions = "<0.3.0" +current = false +relative_directory = "theme/" + +[[repos.themes]] +name = "TNG" +repository = "https://github.com/lex148/leftwm-tng/" +commit = "*" +version = "0.0.1" +leftwm_versions = "<0.3.0" +current = false + +[[repos.themes]] +name = "Windows XP" +repository = "https://github.com/lex148/leftwm-windowsxp/" +commit = "*" +version = "0.0.1" +leftwm_versions = "<0.3.0" +current = false + +[[repos.themes]] +name = "Dracula Rounded" +directory = "/home/julian/.config/leftwm/themes/Dracula Rounded" +repository = "https://github.com/AethanFoot/leftwm-theme-dracula-rounded/" +commit = "*" +version = "0.0.3" +leftwm_versions = "^0.3.0" +current = false + +[[repos.themes]] +name = "Forest" +directory = "/home/julian/.config/leftwm/themes/Forest" +repository = "https://github.com/lex148/forest/" +commit = "*" +version = "0.0.1" +leftwm_versions = "^0.3.0" +current = true + +[[repos.themes]] +name = "Ground Zero" +repository = "https://github.com/Qwart376/Ground-Zero/" +commit = "*" +version = "0.0.1" +leftwm_versions = "<0.3.0" +current = false + +[[repos.themes]] +name = "Red Moon" +repository = "https://github.com/Qwart376/Red-Moon" +commit = "*" +version = "0.0.1" +leftwm_versions = "<0.3.0" +current = false + +[[repos.themes]] +name = "Blue Coffee" +directory = "/home/julian/.config/leftwm/themes/Blue Coffee" +repository = "https://github.com/Qwart376/Blue-Coffee/" +commit = "*" +version = "0.0.1" +leftwm_versions = "<0.3.0" +current = false + +[[repos.themes]] +name = "sunflower" +repository = "https://github.com/mautamu/leftwm-sunflower/" +commit = "*" +version = "0.1.2" +leftwm_versions = "^0.2.11, <0.3.0" +current = false + +[[repos.themes]] +name = "Bumblebee" +repository = "https://github.com/mfdorst/leftwm-bumblebee/" +commit = "*" +version = "0.0.1" +leftwm_versions = "^0.2.8, <0.3.0" +current = false + +[[repos.themes]] +name = "Sunset" +repository = "https://github.com/Syudagye/leftwm-sunset" +commit = "*" +version = "0.0.1" +leftwm_versions = "<0.3.0" +current = false + +[[repos.themes]] +name = "Garden" +directory = "/home/julian/.config/leftwm/themes/Garden" +repository = "https://github.com/taylor85345/leftwm-theme-garden" +commit = "*" +version = "0.0.4" +leftwm_versions = ">0.2.7" +current = false + +[[repos.themes]] +name = "Epitaph" +directory = "/home/julian/.config/leftwm/themes/Epitaph" +repository = "https://github.com/VentGrey/Epitaph" +commit = "*" +version = "0.0.2" +leftwm_versions = "*" +current = false + +[[repos.themes]] +name = "Ocean-night" +directory = "/home/julian/.config/leftwm/themes/Ocean-night" +repository = "https://github.com/TheRoniOne/ocean-night" +commit = "*" +version = "0.0.1" +leftwm_versions = "*" +current = false + +[[repos.themes]] +name = "Flamingo" +repository = "https://github.com/necaris/leftwm-theme-flamingo" +commit = "*" +version = "0.0.1" +leftwm_versions = ">0.2.7, <0.3.0" +current = false + +[[repos.themes]] +name = "Amber" +repository = "https://github.com/di-effe/amber" +commit = "*" +version = "0.2.2" +leftwm_versions = ">0.2.10, <0.3.0" +current = false + +[[repos.themes]] +name = "Catppuccin" +repository = "https://github.com/di-effe/catppuccin" +commit = "*" +version = "0.1.1" +leftwm_versions = ">0.2.10, <0.3.0" +current = false + +[[repos.themes]] +name = "Molese" +repository = "https://github.com/m0lese/leftwm-config" +commit = "*" +version = "2.1.0" +leftwm_versions = ">0.2.10, <0.3.0" +current = false + +[[repos.themes]] +name = "Double Bar" +directory = "/home/julian/.config/leftwm/themes/Double Bar" +repository = "https://github.com/PeterDauwe/doublebar/" +commit = "*" +version = "0.0.2" +leftwm_versions = "^0.3.0" +current = false + +[[repos.themes]] +name = "SpaceJelly" +repository = "https://gitlab.com/jchand99/space_jelly" +commit = "*" +version = "1.0.0" +leftwm_versions = ">0.2.10, <0.3.0" +current = false + +[[repos.themes]] +name = "Ascent" +directory = "/home/julian/.config/leftwm/themes/Ascent" +repository = "https://gitlab.com/mWalrus/ascent" +commit = "*" +version = "1.0.0" +leftwm_versions = ">0.2.7" +current = false + +[[repos.themes]] +name = "Zexanima" +repository = "https://github.com/calebgasser/zexanima-leftwm-theme/tree/develop" +commit = "*" +version = "0.0.1" +leftwm_versions = ">0.3.0" +current = false + +[[repos]] +url = "localhost" +name = "LOCAL" +definitions_version = 1 +themes = [] diff --git a/leftwm/themes/current b/leftwm/themes/current new file mode 160000 index 0000000..129901d --- /dev/null +++ b/leftwm/themes/current @@ -0,0 +1 @@ +Subproject commit 129901d8aa23bbbcacebb44aebe62aaee441c9cf diff --git a/leftwm/themes/current.diff b/leftwm/themes/current.diff new file mode 100644 index 0000000..8dc3d15 --- /dev/null +++ b/leftwm/themes/current.diff @@ -0,0 +1,134 @@ +Submodule leftwm/themes/current contains modified content +diff --git a/leftwm/themes/current/down b/leftwm/themes/current/down +index 81fcae4..8dce89e 100755 +--- a/leftwm/themes/current/down ++++ b/leftwm/themes/current/down +@@ -14,4 +14,3 @@ pkill picom + pkill polybar + pkill dunst + pkill lxsession +- +diff --git a/leftwm/themes/current/polybar/bars.ini b/leftwm/themes/current/polybar/bars.ini +index 368f5e5..80d09d4 100644 +--- a/leftwm/themes/current/polybar/bars.ini ++++ b/leftwm/themes/current/polybar/bars.ini +@@ -46,6 +46,7 @@ bar-volume-empty = ${bar.empty} + bar-volume-empty-font = 2 + bar-volume-empty-foreground = ${color.sep} + ramp-headphones-0 = ๎ฅผ ++click-right = pavucontrol + + [module/brightness] + type = internal/backlight +diff --git a/leftwm/themes/current/polybar/config.ini b/leftwm/themes/current/polybar/config.ini +index 88747c3..e81ff69 100644 +--- a/leftwm/themes/current/polybar/config.ini ++++ b/leftwm/themes/current/polybar/config.ini +@@ -18,7 +18,7 @@ monitor = ${env:monitor} + monitor-fallback = + monitor-strict = false + override-redirect = false +-bottom = false ++bottom = true + fixed-center = true + width = 100% + height = 34 +@@ -39,8 +39,8 @@ font-0 = "Iosevka Nerd Font:size=10;4" + font-1 = "Iosevka Nerd Font:size=10;3" + font-2 = "feather:size=12;3" + modules-left = workspaces sep cpu memory filesystem +-modules-center = mpd sep date +-modules-right = battery network sep volume brightness sep sysmenu sep ++modules-center = ++modules-right = battery network volume brightness sep date + separator = + dim-value = 1.0 + wm-name = +@@ -50,7 +50,7 @@ tray-detached = false + enable-ipc = true + click-left = + click-middle = +-click-right = ++click-right = jgmenu_run + scroll-up = + scroll-down = + double-click-left = +diff --git a/leftwm/themes/current/polybar/modules.ini b/leftwm/themes/current/polybar/modules.ini +index 0b2ff0e..0491e61 100644 +--- a/leftwm/themes/current/polybar/modules.ini ++++ b/leftwm/themes/current/polybar/modules.ini +@@ -76,11 +76,11 @@ label = " %percentage%%" + + [module/date] + type = internal/date +-interval = 1.0 +-date = %A, %d %B +-time = at %I:%M %p ++interval = 0.5 ++date = %A, %d.%m.%Y ++time = at %H:%M:%S + date-alt = It's %A, %d %B %Y +-time-alt = at %k:%M:%S ++time-alt = at %H:%M:%S + format =