Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev>
This commit is contained in:
Tuan-Dat Tran
2024-03-15 16:32:15 +01:00
72 changed files with 976 additions and 13182 deletions

View File

@@ -1,6 +1,6 @@
! urxvt
! Fonts
urxvt*font: xft:Hack Nerd Font Mono:style=Regular:size=11:hinting=full, xft:DejaVu Sans Mono for Powerline:size=11, SourceHanSans-Regular
urxvt*font: xft:DejaVuSansM Nerd Font Mono:style=Regular:size=11:hinting=full
! Behavior
urxvt*scrollBar: false

View File

@@ -1,2 +0,0 @@
set -g prefix F12
unbind-key -n C-a

View File

@@ -1,15 +0,0 @@
# Status bar for tmux and screen
# Status beginning with '#' are disabled.
# Screen has two status lines, with 4 quadrants for status
screen_upper_left="color"
screen_upper_right="color whoami hostname ip_address menu"
screen_lower_left="color logo distro release #arch session"
screen_lower_right="color network #disk_io custom #entropy raid reboot_required updates_available #apport #services #mail users uptime #fan_speed #cpu_temp battery wifi_quality #processes load_average cpu_count cpu_freq memory #swap disk #time_utc date time"
# Tmux has one status line, with 2 halves for status
tmux_left=" logo #distro #release #arch #session"
# You can have as many tmux right lines below here, and cycle through them using Shift-F5
tmux_right="#network #disk_io #custom #entropy #raid #reboot_required #updates_available #apport #services #mail #users #uptime #fan_speed #cpu_temp battery #wifi_quality #processes #load_average #cpu_count #cpu_freq #memory #swap #disk #whoami #hostname ip_address #time_utc date time"

View File

@@ -1,5 +1,5 @@
[font]
size = 10
size = 12
[font.bold]
style = "Bold"
@@ -11,7 +11,7 @@ style = "Bold Italic"
style = "Italic"
[font.normal]
family = "DejaVu Sans Mono for Powerline"
family = "DejaVuSansM Nerd Font Mono"
style = "Regular"
[window]

View File

@@ -1,895 +0,0 @@
# Configuration for Alacritty, the GPU enhanced terminal emulator.
# 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. Both lines and columns
# must be non-zero for this to take effect. 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: none
# 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: 0.9
# 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
# Decorations theme variant (Linux/BSD only)
#
# Override the variant of the GTK theme/Wayland client side decorations.
# Commonly supported values are `dark` and `light`. Set this to `None` to use
# the default theme variant.
#decorations_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: DejaVu Sans Mono for Powerline
# 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: 7
# 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
# 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'
# Keyboard 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
# Footer bar
#
# Color used for the footer bar on the bottom, used by search regex input,
# hyperlink URI preview, etc.
#
#footer_bar:
# background: '#c5c8c6'
# foreground: '#1d1f21'
# 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
# Time after which cursor stops blinking, in seconds.
#
# Specifying '0' will disable timeout for blinking.
#blink_timeout: 5
# 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:
# - (Linux/BSD/macOS) `$SHELL` or the user's login shell, if `$SHELL` is unset
# - (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
# Hints
#
# Terminal hints can be used to find text or hyperlink 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 any of `regex` or `hyperlinks` field and either an
# `action` or a `command` field. The fields `mouse`, `binding` and
# `post_processing` are optional.
#
# The `hyperlinks` option will cause OSC 8 escape sequence hyperlinks to be
# highlighted.
#
# 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 and applies only to
# `regex` matches.
#
# 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{-}\\^⟨⟩`]+"
# hyperlinks: true
# 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`.
# - CenterAroundViCursor
# Center view around vi mode cursor
#
# - 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: 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: Z, mode: Vi|~Search, action: CenterAroundViCursor }
#- { 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
# Highlight window damage information.
#highlight_damage: false

View File

@@ -21,9 +21,8 @@ focus_follows_mouse no
# Configure
# border style <normal|1pixel|pixel xx|none|pixel>
new_window pixel 2
new_float normal
hide_edge_borders none
default_border none
################################################################################################
###################################### Workspace Settings ######################################
@@ -80,6 +79,7 @@ bindsym $mod+Shift+9 move container to workspace $ws9; workspace $ws9
bindsym $mod+Shift+0 move container to workspace $ws0; workspace $ws0
# Open specific applications in floating mode
<<<<<<< HEAD
for_window [class="^Thunderbird$" title="^.*Event:"] floating enable
# https://github.com/z3ntu/dotfiles/blob/master/i3/.config/i3/config
@@ -93,22 +93,53 @@ for_window [class="^Steam$" title="^Steam - Self Updater$"] floating enable
for_window [class="^Steam$" title="^Screenshot Uploader$"] floating enable
for_window [class="^Steam$" title="^Steam Guard - Computer Authorization Required$"] floating enable
for_window [title="^Steam Keyboard$"] floating enable
||||||| e9d53f0
for_window [class="(?i)virtualbox"] floating enable border normal
for_window [title="KeePassX$"] floating enable border normal
for_window [class="^Thunderbird$" title="^.*Event:"] floating enable
# https://github.com/z3ntu/dotfiles/blob/master/i3/.config/i3/config
# Steam
for_window [class="^Steam$" title="^Friends List$"] floating enable
for_window [class="^Steam$" title="Steam"] floating enable
for_window [class="^Steam$" title="^Settings$"] floating enable
for_window [class="^Steam$" title=".* - event started"] floating enable
for_window [class="^Steam$" title=".* CD key"] floating enable
for_window [class="^Steam$" title="^Steam - Self Updater$"] floating enable
for_window [class="^Steam$" title="^Screenshot Uploader$"] floating enable
for_window [class="^Steam$" title="^Steam Guard - Computer Authorization Required$"] floating enable
for_window [title="^Steam Keyboard$"] floating enable
=======
for_window [class="(?i)virtualbox"] floating enable border normal
for_window [title="KeePassX$"] floating enable border normal
>>>>>>> clean_emacs
###############################################################################
############################ Startup Applications #############################
###############################################################################
# exec --no-startup-id setxkbmap us,de; setxkbmap -option ctrl:nocaps; setxkbmap -option grp:lalt_lshift_toggle
exec --no-startup-id setxkbmap eu; setxkbmap -option ctrl:nocaps;
exec --no-startup-id picom
exec --no-startup-id udiskie
exec --no-startup-id conky -c ~/.conky/syclo-crimson-bottomleft.conkyrc
# exec --no-startup-id synergyc -f --no-tray --debug INFO --name genesis --enable-crypto 192.168.178.38:24800
exec --no-startup-id dunst
exec --no-startup-id ~/.scripts/startup.sh
<<<<<<< HEAD
exec --no-startup-id ~/.scripts/battery_stats.sh
exec --no-startup-id llk
||||||| e9d53f0
exec --no-startup-id llk
exec --no-startup-id emacs --daemon
=======
>>>>>>> clean_emacs
exec --no-startup-id syncthing
<<<<<<< HEAD
exec --no-startup-id xrandr --output eDP1 --auto --left-of HDMI1 --output HDMI1 --off --output DP1 --off
||||||| e9d53f0
exec --no-startup-id xrandr --output eDP1 --auto --left-of HDMI1 --output HDMI1 --off --output DP1 --off; feh --randomize --bg-fill /home/tuan/Pictures/Wallpaper/*
=======
>>>>>>> clean_emacs
exec --no-startup-id feh --randomize --bg-fill $HOME/Pictures/Wallpaper/*
###############################################################################
@@ -122,13 +153,13 @@ bindsym $mod+Shift+s exec poweroff
# start a terminal
bindsym $mod+space exec alacritty
bindsym $mod+Return exec alacritty -e nu /home/tuan/.scripts/zellij-chooser.nu
bindsym $mod+Return exec alacritty -e zellij
# kill focused window
bindsym $mod+Shift+q kill
# start program launcher
bindsym $mod+d exec --no-startup-id /home/tuan/.config/rofi/launchers/type-1/launcher.sh
bindsym $mod+d exec --no-startup-id $HOME/.config/rofi/launchers/type-1/launcher.sh
# Screen brightness controls
bindsym XF86MonBrightnessUp exec --no-startup-id ~/.scripts/screen.sh up
@@ -138,21 +169,30 @@ bindsym XF86MonBrightnessDown exec --no-startup-id ~/.scripts/screen.sh down
bindsym XF86AudioLowerVolume exec --no-startup-id ~/.scripts/sound.sh down
bindsym XF86AudioRaiseVolume exec --no-startup-id ~/.scripts/sound.sh up
bindsym XF86AudioMute exec --no-startup-id ~/.scripts/sound.sh toggle
bindsym XF86AudioPlay exec "playerctl play-pause; cmus-remote -u"
bindsym XF86AudioStop exec "playerctl stop; cmus-remote -s"
bindsym XF86AudioNext exec "playerctl next; cmus-remote -n"
bindsym XF86AudioPrevious exec "playerctl previous; cmus-remote -r"
bindsym XF86AudioPlay exec "playerctl play-pause"
bindsym XF86AudioStop exec "playerctl stop"
bindsym XF86AudioNext exec "playerctl next"
bindsym XF86AudioPrevious exec "playerctl previous"
# Application Shortcuts
bindsym $mod+b exec firefox
<<<<<<< HEAD
bindsym $mod+p exec firefox --private-window https://mos4.de
bindsym $mod+e exec emacs
bindsym $mod+m exec thunderbird
||||||| e9d53f0
bindsym $mod+p exec firefox --private-window https://mos4.de
bindsym $mod+e exec emacsclient -c
bindsym $mod+m exec thunderbird
=======
bindsym $mod+p exec firefox --private-window https://tudattr.dev
>>>>>>> clean_emacs
# Whole Screen
bindsym Control+Print exec --no-startup-id ~/.scripts/screenshot.sh screen
# Window
bindsym Mod1+Sys_Req --release exec --no-startup-id ~/.scripts/screenshot.sh window
# Area
@@ -191,7 +231,7 @@ bindsym $mod+f fullscreen toggle
bindsym $mod+Mod1+space floating toggle
# change focus between tiling / floating windows
# bindsym $mod+space focus mode_toggle
bindsym $mod+Shift+f focus mode_toggle
# focus the parent container
bindsym $mod+a focus parent
@@ -313,3 +353,4 @@ bindsym $mod+g mode "default"
bindsym Return mode "default"
bindsym Escape mode "default"
}

View File

@@ -1,392 +0,0 @@
[colors]
background = ${xrdb:color0:#22300}
background-alt = ${xrdb:color8:#fa400}
foreground = ${xrdb:color7:#cdd}
foreground-alt = ${xrdb:color15:#eef}
black = ${xrdb:color0:#233}
red = ${xrdb:color1:#f90}
green = ${xrdb:color2:#8c4}
yellow = ${xrdb:color3:#fc0}
blue = ${xrdb:color4:#0af}
magenta = ${xrdb:color5:#e16}
cyan = ${xrdb:color6:#098}
white = ${xrdb:color7:#cdd}
[bar/systray]
width = 100%
height = 25
radius = 6.0
fixed-center = true
tray-position = right
tray-padding = 0
background = #00000000
foreground = ${colors.foreground}
module-margin-left = 1
module-margin-right = 1
font-0 = DejaVu Sans Mono for Powerline:pixelsize=10;1
# font-1 = unifont:fontformat=truetype:size=8:antialias=false;0
# font-2 = siji:pixelsize=10;1
# font-3 = FontAwesome:style=Regular:pixelsize=10
modules-left =
modules-center = i3
modules-right =
cursor-click = pointer
cursor-scroll = ns-resize
[bar/beep]
width = 100%
height = 25
radius = 6.0
fixed-center = true
tray-position = right
tray-padding = 2
background = #00000000
foreground = ${colors.foreground}
module-margin-left = 1
module-margin-right = 1
font-0 = fixed:pixelsize=10;1
font-1 = unifont:fontformat=truetype:size=8:antialias=false;0
font-2 = siji:pixelsize=10;1
font-3 = FontAwesome:style=Regular:pixelsize=10
modules-left = volume xkeyboard
modules-center = date
modules-right =
cursor-click = pointer
cursor-scroll = ns-resize
[bar/boop]
width = 100%
height = 2%
bottom = true
radius = 6.0
fixed-center = true
background = #00000000
foreground = ${colors.foreground}
line-size = 0
line-color = ${colors.blue}
border-size = 0
border-color = #00000000
padding-left = 0
padding-right = 2
module-margin-left = 1
module-margin-right = 2
font-0 = fixed:pixelsize=10;1
font-1 = unifont:fontformat=truetype:size=8:antialias=false;0
font-2 = siji:pixelsize=10;1
font-3 = FontAwesome:style=Regular:pixelsize=10
modules-left = airvpn
modules-center = i3
modules-right = xbacklight wlan eth battery1 powermenu
cursor-click = pointer
cursor-scroll = ns-resize
[module/xkeyboard]
type = internal/xkeyboard
blacklist-0 = num lock
format-prefix = " "
format-prefix-foreground = ${colors.foreground-alt}
format-prefix-underline = ${colors.magenta}
label-layout = %layout%
label-layout-underline = ${colors.magenta}
label-indicator-padding = 2
label-indicator-margin = 1
label-indicator-background = ${colors.magenta}
label-indicator-underline = ${colors.magenta}
[module/spotify]
type = custom/script
exec-if = pgrep -x spotify
exec = echo "$(playerctl metadata xesam:artist) - $(playerctl metadata xesam:title)"
[module/spotify-prev]
type = custom/script
exec-if = pgrep -x spotify
exec = echo ""
click-left = bash -c "playerctl previous"
[module/spotify-next]
type = custom/script
exec-if = pgrep -x spotify
exec = echo ""
click-left = bash -c "playerctl next"
[module/spotify-play]
type = custom/script
exec-if = pgrep -x spotify
exec = ~/.scripts/spotify-play.out
tail = true
click-left = bash -c "if [ `cat /home/$USER/.scripts/playstate` = 0 ]; then echo '1'>/home/$USER/.scripts/playstate;else echo '0'>/home/$USER/.scripts/playstate;fi"
[module/spotify-stop]
type = custom/script
exec-if = pgrep -x spotify
exec = echo ""
tail = true
click-left = bash -c "playerctl stop && echo '0'>/home/$USER/.scripts/playstate"
[module/airvpn]
type = custom/script
exec-if =
exec = "if [[ $(ip addr | grep tun) ]]; then echo 'VPN: connected'; else echo 'VPN: disconnectd'; fi"
tail = true
[module/i3]
type = internal/i3
pin-workspaces = true
strip-wsnumbers = true
index-sort = false
enable-click = false
enable-scroll = false
wrapping-scroll = false
reverse-scroll = false
fuzzy-match = true
ws-icon-0 = 1;
ws-icon-1 = 2;
ws-icon-2 = 3;
ws-icon-3 = 4;
ws-icon-4 = 5;
ws-icon-5 = 6;
ws-icon-6 = 7;
ws-icon-7 = 8;
ws-icon-8 = 9;
ws-icon-default = 
format = <label-state>
label-mode = %mode%
label-mode-padding = 2
label-mode-background = ${colors.black}
label-focused = %name%
label-focused-foreground = ${colors.foreground}
label-focused-background = ${colors.background}
label-focused-underline = ${colors.blue}
label-focused-padding = 4
label-unfocused = %name%
label-unfocused-padding = 4
label-visible = %name%
label-visible-underline = ${colors.red}
label-visible-padding = 4
label-urgent = %name%
label-urgent-foreground = ${colors.black}
label-urgent-background = ${colors.red}
label-urgent-padding = 4
[module/xbacklight]
type = internal/xbacklight
format = <label>
label =  %percentage%%
label-underline = ${colors.yellow}
[module/backlight-acpi]
inherit = module/xbacklight
type = internal/backlight
card = intel_backlight
[module/wlan]
type = internal/network
interface = wlp2s0
interval = 3.0
format-connected = <label-connected>
format-connected-underline = ${colors.cyan}
label-connected =  %essid%
format-disconnected =
;format-disconnected = <label-disconnected>
;format-disconnected-underline = ${self.format-connected-underline}
;label-disconnected = %ifname% disconnected
;label-disconnected-foreground = ${colors.foreground-alt}
[module/date]
type = internal/date
interval = 1
date =
date-alt = " %Y-%m-%d"
time = " %H:%M:%S"
time-alt =
format-prefix =
format-prefix-foreground = ${colors.foreground-alt}
format-underline = ${colors.magenta}
label = %date% %time%
[module/volume]
type = internal/volume
format-volume = <label-volume> <bar-volume>
label-volume = 
label-volume-foreground = ${root.foreground}
format-volume-underline = ${colors.green}
format-muted-foreground = ${colors.foreground-alt}
label-muted =  Muted
label-muted-underline = ${colors.red}
bar-volume-width = 10
bar-volume-foreground-0 = ${colors.green}
bar-volume-foreground-1 = ${colors.green}
bar-volume-foreground-2 = ${colors.green}
bar-volume-foreground-3 = ${colors.green}
bar-volume-foreground-4 = ${colors.green}
bar-volume-foreground-5 = ${colors.yellow}
bar-volume-foreground-6 = ${colors.red}
bar-volume-gradient = true
bar-volume-indicator = |
bar-volume-indicator-font = 2
bar-volume-fill = ─
bar-volume-fill-font = 2
bar-volume-empty = ─
bar-volume-empty-font = 2
bar-volume-empty-foreground = ${colors.foreground-alt}
[module/battery1]
type = internal/battery
battery = BAT0
adapter = AC0
full-at = 98
format-charging = <animation-charging> <label-charging>
format-charging-underline = ${colors.yellow}
format-discharging = <ramp-capacity> <label-discharging>
format-discharging-underline = ${self.format-charging-underline}
format-full-prefix = 
format-full-prefix-foreground = ${colors.foreground-alt}
format-full-underline = ${self.format-charging-underline}
ramp-capacity-0 = 
ramp-capacity-1 = 
ramp-capacity-2 = 
ramp-capacity-3 = 
ramp-capacity-4 = 
ramp-capacity-foreground = ${colors.foreground-alt}
animation-charging-0 = 
animation-charging-1 = 
animation-charging-2 = 
animation-charging-3 = 
animation-charging-4 = 
animation-charging-foreground = ${colors.foreground-alt}
animation-charging-framerate = 750
[module/battery2]
type = internal/battery
battery = BAT1
adapter = ACP0
full-at = 98
format-charging = <animation-charging> <label-charging>
format-charging-underline = ${colors.yellow}
format-discharging = <ramp-capacity> <label-discharging>
format-discharging-underline = ${self.format-charging-underline}
format-full-prefix = 
format-full-prefix-foreground = ${colors.foreground-alt}
format-full-underline = ${self.format-charging-underline}
ramp-capacity-0 = 
ramp-capacity-1 = 
ramp-capacity-2 = 
ramp-capacity-3 = 
ramp-capacity-4 = 
ramp-capacity-foreground = ${colors.foreground-alt}
animation-charging-0 = 
animation-charging-1 = 
animation-charging-2 = 
animation-charging-3 = 
animation-charging-4 = 
animation-charging-foreground = ${colors.foreground-alt}
animation-charging-framerate = 750
# [module/powermenu]
# type = custom/menu
# expand-right = true
# format-spacing = 1
#
# label-open = 
# label-open-foreground = ${colors.magenta}
# label-close = cancel
# label-close-foreground = ${colors.magenta}
# label-separator = |
# label-separator-foreground = ${colors.foreground-alt}
#
# menu-0-0 = power off
# menu-0-0-exec = poweroff
# menu-0-1 = reboot
# menu-0-1-exec = reboot
# menu-0-2 = logout
# menu-0-2-exec = dm-tool lock
;; Power Menu Module
[module/powermenu]
type = custom/text
content = aaa
content-background = ${colors.magenta}
content-foreground = ${colors.magenta}
click-left = ~/.config/rofi/powermenu/type-1/powermenu.sh
click-right = powermenu_t1
[settings]
;screenchange-reload = true
;compositing-background = xor
;compositing-background = screen
;compositing-foreground = source
;compositing-border = over
[global/wm]
margin-top = 5
margin-bottom = 5

View File

@@ -16,5 +16,5 @@ theme='style-7'
## Run
rofi \
-show run \
-theme ${dir}/${theme}.rasi
-show run \
-theme ${dir}/${theme}.rasi

View File

@@ -1,208 +0,0 @@
# you can edit this file to change keybindings lines that start with '#' are comments
# the syntax is pretty simple. Some examples:
#command k (command is executed when k is pressed)
#command <C-k> (command is executed when k is pressed while holding control)
#command <S-k> (command is executed when k is pressed while holding shift)
#command <A-k> (command is executed when k is pressed while holding alt)
#command <S-+> (command is executed when = is pressed while holding shift.
# Note that <S-=> would not work because of a bug in the command system so
# when prefixing non-ascii keys with shift, you have to specify the shift
# modified key in addition to the shift modifier)
#command <C-S-k> (command is executed when k is pressed while holding control and shift)
#command gg (command is executed when g is pressed twice)
#command gt (command is executed when g is pressed and then t is pressed)
#command g<C-n><S-d>t (command is executed when g is pressed and then n is pressed while holding\
# control and then d is pressed while holding shift and then t is pressed)
# ---------- NAVIGATION AND ZOOM ----------
# Goto the begining of document. If prefixed with a number, it will go to that page.
# for example 150gg goes to page 150.
goto_begining gg
goto_begining <C-<home>>
# Opens a prompt to enter page number and jump to that page
goto_page_with_page_number <home>
# Goto the end of the document
goto_end <end>
goto_end <S-g>
# movement (can be prefixed with a number)
move_down <down>
move_up <up>
move_left <right>
move_right <left>
move_down j
move_up k
move_left l
move_right h
# Goto forward for one page width. (can be prefixed with a number)
# (note that going forward for one page width is not usually what you want becaue if
# the page is larger than the screen you will miss some content. What you usually want is screen_down)
next_page <C-<pagedown>>
previous_page <C-<pageup>>
# Go down one screen width (can be prefixed with a number which tells how many screen widths should we go down)
screen_down <space>
screen_up <S-space>
screen_down <pagedown>
screen_up <pageup>
# Goto the next/prev chapter
next_chapter gc
prev_chapter g<S-c>
# Goto previous viewing state and delete the current (and future) state(s).
pop_state w
# if we are not at the end of viewing history, goto the next history point
next_state <l>
# goto the previous history point
prev_state <h>
prev_state <backspace>
next_state <C-<right>>
prev_state <C-<left>>
# Open table of contents.
goto_toc t
# zoom
zoom_in <S-+>
zoom_in =
zoom_out -
# Automatically set the zoom level and horizontal offset such that the current page is centered horizontally and
# it fills the screen width
fit_to_page_width <f9>
# same as fit_to_page_with but ignores page margins
fit_to_page_width_smart <f10>
# Open a file dialog to select a document.
open_document o
open_document_embedded <C-o>
open_document_embedded_from_current_path <C-S-o>
# Open a searchable list of previously opened documents.
open_prev_doc <S-o>
# ---------- SEARCH ----------
# search the document.
# example: /something (searches the document for 'something')
# you can also specify a page range to search:
# example: /<110,135>something (searches pages 110 to 135 (inclusive) for 'something')
search <C-f>
search /
# this is the same as search.
ranged_search r<C-f>
ranged_search r/
# searches the current chapter. This is essentially the same as search but the range prefix is autofilled
# with the range of the current lowest level subchapter.
chapter_search c<C-f>
chapter_search c/
# Goto the next search item. Can be prefixed with a number which is the same as performing the command n times
# for example if we are on the 10th search result and we input 15n, we go to the 25th search result.
next_item n
# Goto the previous search result. Can be prefixed with a number with similar rules as next_item.
previous_item <S-n>
# ---------- BOOKMARKS ----------
# Add a bookmark in the current location (opens a text input where you can specify the bookmark text)
add_bookmark b
delete_bookmark db
# Open bookmarks menu of the current document.
goto_bookmark gb
# Open bookmarks menu of all documents.
goto_bookmark_g g<S-b>
# ---------- HIGHLIGHTS ----------
# you can select a piece of text and press the `add_highlight` shortcut followed by a symbol (a character from a-z) to highlight
# the text
add_highlight h
# search in highlights of current document
goto_highlight gh
# search in highlights of all documents
goto_highlight_g g<S-h>
# click on a highlight and then press the `delete_highlight` shortcut to delete it.
delete_highlight dh
# ---------- MARKS ----------
# Mark the current location. After pressing the mark button, you must enter a symbol (a letter from a-z or A-Z).
# this marks the current location in the file with the entered symbol. Afterwards you will be able to return to
# the locations of the marks using goto_mark command.
# example: mm (marks the current location in the file with a mark named 'm')
set_mark m
# Goto a previously set mark. After pressing goto_mark you must enter a symbol associated with a previously set mark.
# example: `m (goes to the location of the mark named m)
goto_mark `
# ---------- PORTALS ----------
# If we are in default state, goto portal state with the current location in document as the portal source
# if we are already in the portal state, create the portal with the current location as destination.
link p
# Delete the portal with the closest source to current location
delete_link dp
# Goto the position of the portal with the closest source to current location
goto_link <tab>
# Similar to goto_link, except when prev_state is called, the destination of the link is update to be the state
# on which prev_state is called
edit_link <S-p>
edit_link <S-<tab>>
# Open/Close the helper window for portals
toggle_one_window <f12>
# ---------- MISC ----------
# copy selected text
copy y
toggle_fullscreen <f11>
# Toggles whether we highlight pdf links or not
toggle_highlight <f1>
# open command line
command <S-:>
# seach the selected text using one of the search engines defined using search_url_* settings in prefs.config (* can be any letter between 'a' and 'z')
external_search s
#search_selected_text_in_google_scholar ss
#search_selected_text_in_libgen sl
open_selected_url <S-q>
toggle_dark_mode <f8>
# toggle synctex mode. When in synctex mode, right clicking on a pdf launches the corresponding latex page.
toggle_synctex <f4>
# while in mouse drag mode, instead of selecting text you can pan the screen using mouse
toggle_mouse_drag_mode <f6>
# command the move the visual mark to the next/previous line
#move_visual_mark_up k
#move_visual_mark_down j
# In visual scroll mode, mouse wheel performs `move_visual_mark_up` and `move_visual_mark_down` commands
toggle_visual_scroll <f7>
toggle_presentation_mode <f5>
quit q

View File

@@ -1,137 +0,0 @@
# (can be 0 or 1) if set, shows a notification on startup if a new version of sioyek is available
check_for_updates_on_startup 0
# The color with which the screen is cleared before rendering the pdf
background_color 1.0 1.0 1.0
dark_mode_background_color 0.0 0.0 0.0
# Showing full white text on black background can be irritating for the eye, we can dim the whites a little bit using the contrast option
dark_mode_contrast 0.8
# Highlight color when text is selected using mouse
text_highlight_color 1.0 1.0 0.0
# The color of highlight bar which is displayed when right click is pressed
vertical_line_color 0.0 0.0 0.0 0.1
# Highlight color when text is a search match
search_highlight_color 0.0 1.0 0.0
# Hihglight color for PDF links (note that highlight is off by default
# and can only be seen by performing a toggle_highlight command. See keys.config for more details)
link_highlight_color 0.0 0.0 1.0
# Hihglight color for synctex forward search highlights
synctex_highlight_color 1.0 0.0 1.0
# urls to use when executing external_search commands
search_url_s https://scholar.google.com/scholar?q=
search_url_l http://gen.lib.rus.ec/scimag/?q=
search_url_g https://www.google.com/search?q=
# which search url to choose when middle clicking or shift middle clicking on text (the values are the letters of corresponding search_url_* )
# for example if i set `middle_click_search_engine s`, then we use the url associated with `search_url_s` to handle middle click searches
middle_click_search_engine s
shift_middle_click_search_engine l
# The factor by which we increase/decrease zoom when performing zoom_in or zoom_out
zoom_inc_factor 1.2
# How many inches we move vertically/horizontally when performing move_* commands
vertical_move_amount 1.0
horizontal_move_amount 1.0
# When performing screen_down/screen_up we usually don't move a full screen because it causes the user to lose context
# Here we specify the fraction of the screen width by which we move when performing these commands
move_screen_percentage 0.5
# If 0, Table of Contents is shown in a hierarchial tree, otherwise it is a flat list (can improve performance for extremely large table of contents)
flat_toc 0
# If it is 1, when launching the application if we detect multiple monitors, we automatically launch the helper window in second monitor
should_use_multiple_monitors 0
# if the last opened document is empty, load the tutorial pdf instead
should_load_tutorial_when_no_other_file 1
# if it is 0, then we use the previous instance of sioyek when launching a new file.
# otherwise a new instance is launched every time we open a new file.
should_launch_new_instance 0
# the command to use when trying to do inverse search into a LaTeX document. Uncomment and provide your own command.
# %1 expands to the name of the file and %2 expans to the line number.
#inverse_search_command "C:\path\to\vscode\Code.exe" -r -g %1:%2
# you can specify the exact highlight color for each of 26 different highlight types
# when moving to the next line using visual marker, this setting specifies the distance of the market to the top of the screen in fractions of screen size
visual_mark_next_page_fraction 0.25
# when moving to the next line using visual marker, this setting determines at which point we move the screen
visual_mark_next_page_fraction 0.2
#Amethyst
highlight_color_a 0.94 0.64 1.00
#Blue
highlight_color_b 0.00 0.46 0.86
#Caramel
highlight_color_c 0.60 0.25 0.00
#Damson
highlight_color_d 0.30 0.00 0.36
#Ebony
highlight_color_e 0.10 0.10 0.10
#Forest
highlight_color_f 0.00 0.36 0.19
#Green
highlight_color_g 0.17 0.81 0.28
#Honeydew
highlight_color_h 1.00 0.80 0.60
#Iron
highlight_color_i 0.50 0.50 0.50
#Jade
highlight_color_j 0.58 1.00 0.71
#Khaki
highlight_color_k 0.56 0.49 0.00
#Lime
highlight_color_l 0.62 0.80 0.00
#Mallow
highlight_color_m 0.76 0.00 0.53
#Navy
highlight_color_n 0.00 0.20 0.50
#Orpiment
highlight_color_o 1.00 0.64 0.02
#Pink
highlight_color_p 1.00 0.66 0.73
#Quagmire
highlight_color_q 0.26 0.40 0.00
#Red
highlight_color_r 1.00 0.00 0.06
#Sky
highlight_color_s 0.37 0.95 0.95
#Turquoise
highlight_color_t 0.00 0.60 0.56
#Uranium
highlight_color_u 0.88 1.00 0.40
#Violet
highlight_color_v 0.45 0.04 1.00
#Wine
highlight_color_w 0.60 0.00 0.00
#Xanthin
highlight_color_x 1.00 1.00 0.50
#Yellow
highlight_color_y 1.00 1.00 0.00
#Zinnia
highlight_color_z 1.00 0.31 0.02
# if set, we display a checkerboard pattern for unrendered pages (by default we display nothing)
should_draw_unrendered_pages 0
# displays an overview of destination when hovering over a link with mouse
hover_overview 0
# Use dark mode by default
default_dark_mode 0
# if set, we sort the bookmarks by their location instead of their creation time
sort_bookmarks_by_location 0

View File

@@ -1,64 +0,0 @@
format = """
[░▒▓](#a3aed2)\
[  ](bg:#a3aed2 fg:#090c0c)\
[](bg:#769ff0 fg:#a3aed2)\
$directory\
[](fg:#769ff0 bg:#394260)\
$git_branch\
$git_status\
[](fg:#394260 bg:#212736)\
$nodejs\
$rust\
$golang\
$php\
[](fg:#212736 bg:#1d2230)\
$time\
[ ](fg:#1d2230)\
\n$character"""
[directory]
style = "fg:#e3e5e5 bg:#769ff0"
format = "[ $path ]($style)"
truncation_length = 3
truncation_symbol = "…/"
[directory.substitutions]
"Documents" = " "
"Downloads" = " "
"Music" = " "
"Pictures" = " "
[git_branch]
symbol = ""
style = "bg:#394260"
format = '[[ $symbol $branch ](fg:#769ff0 bg:#394260)]($style)'
[git_status]
style = "bg:#394260"
format = '[[($all_status$ahead_behind )](fg:#769ff0 bg:#394260)]($style)'
[nodejs]
symbol = ""
style = "bg:#212736"
format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
[rust]
symbol = ""
style = "bg:#212736"
format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
[golang]
symbol = "ﳑ"
style = "bg:#212736"
format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
[php]
symbol = ""
style = "bg:#212736"
format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
[time]
disabled = false
time_format = "%R" # Hour:Minute Format
style = "bg:#1d2230"
format = '[[  $time ](fg:#a0a9cb bg:#1d2230)]($style)'

View File

@@ -1,46 +0,0 @@
[options]
font = Hack Nerd Font Monoo 11
font = DejaVu Sans Mono for Powerline 11
[colors]
[colors]
# special
foreground = #98abb2
foreground_bold = #98abb2
cursor = #98abb2
background = rgba(0,0,0,0.9)
# black
color0 = #000000
color8 = #0c0e14
# red
color1 = #e84f4f
color9 = #d23d3d
# green
color2 = #00ffaf
color10 = #237885
# yellow
color3 = #ffbb24
color11 = #f8ec09
# blue
color4 = #007fff
color12 = #00c4ff
# magenta
color5 = #8c00fd
color13 = #cd00df
# cyan
color6 = #00e8b7
color14 = #00d3a7
# white
color7 = #98abb2
color15 = #c0bfbc

18
config/.gitconfig Normal file
View File

@@ -0,0 +1,18 @@
[core]
pager = delta
[interactive]
diffFilter = delta --color-only
[delta]
navigate = true # use n and N to move between diff sections
light = false # set to true if you're in a terminal w/ a light background color (e.g. the default macOS terminal)
[merge]
conflictstyle = diff3
[diff]
colorMoved = default
[user]
email = tuan-dat.tran@tudattr.dev
name = Tuan-Dat Tran

View File

@@ -1,3 +0,0 @@
#back-button, #forward-button, #page-action-buttons{
display:none;
}

View File

@@ -1,14 +0,0 @@
[Install4F96D1932A9F858E]
Default=2x4tnepw.default
Locked=1
[Profile0]
Name=default
IsRelative=1
Path=2x4tnepw.default
Default=1
[General]
StartWithLastProfile=1
Version=2

View File

@@ -1,38 +0,0 @@
#!/usr/bin/env nu
let zellij_session_table = (zellij ls | lines);
let zellij_session_count = ($zellij_session_table | length);
if $zellij_session_count == 0 {
zellij
} else if $zellij_session_count == 1 {
zellij attach
} else {
let prompt = $" zellij sessions:
($zellij_session_table|table)
Choose session 0-($zellij_session_count - 1): ";
let user_input = (input $"($prompt)");
try {
"Into Try"
let user_input = ($user_input | into int);
"Converted"
$"User Input: ($user_input)";
$"Threshold: 0-($zellij_session_count - 0)";
$"UserInput in Threshold? (0 < $user_input or $user_input < $zellij_session_count - 1)"
if (0 < $user_input or $user_input < $zellij_session_count - 1) {
"Valid Input"
let table_entry = ($zellij_session_table | select $user_input);
zellij attach $table_entry;
} else {
"Invalid Input"
zellij;
}
} catch {
"Catch"
zellij;
}
}

View File

@@ -1,25 +1,21 @@
# Services
Host github.com
Hostname github.com
Host github.com gitlab.com git.uni-due.de
Port 22
User git
IdentityFile /mnt/veracrypt1/git
Host github.com
Hostname github.com
Host gitlab.com
Hostname gitlab.com
Port 22
User git
IdentityFile /mnt/veracrypt1/git
Host picoCTF
HostName 2018shell4.picoctf.com
Port 22
User mos4
IdentityFile "/home/tuan/Documents/CTF/picoCTF/2018/30 - ssh-keyz/picoCTF"
Host git.uni-due.de
HostName git.uni-due.de
Port 22
Host git.tudattr.dev
Hostname 192.168.20.12
Port 2222
User git
IdentityFile /mnt/veracrypt1/git
@@ -42,12 +38,34 @@ Host madrigal
User tudattr
IdentityFile /mnt/veracrypt1/mikrotik_rsa
Host aya01
Host inko inko.mii
HostName 192.168.20.14
Host naruto naruto.mii
HostName 192.168.20.13
Host pi pi.mii
HostName 192.168.20.11
Host aya01 aya01.mii
HostName 192.168.20.12
Host behemoth behemoth.mii
User tuan
HostName 192.168.30.174
Host mii
HostName tudattr.dev
Host inko.mii pi.mii aya01.mii naruto.mii behemoth.mii
ProxyJump mii
Host mii pi aya01 inko naruto inko.mii pi.mii aya01.mii naruto.mii behemoth behemoth.mii
Port 22
User tudattr
IdentityFile /mnt/veracrypt1/genesis
<<<<<<< HEAD
Host inko
HostName 192.168.20.14
Port 22
@@ -57,15 +75,26 @@ Host inko
Host naruto
HostName 192.168.20.13
Port 22
||||||| e9d53f0
Host git.aya01
HostName 192.168.20.12
Port 23231
=======
# Work
Host mini
HostName 100.76.45.158
Port 22
>>>>>>> clean_emacs
User tudattr
IdentityFile /mnt/veracrypt1/genesis
Host pi
HostName 192.168.20.11
Port 22
User tudattr
IdentityFile /mnt/veracrypt1/genesis
Host tail-pi
HostName 100.93.79.94
Port 22
User tuant
IdentityFile /mnt/veracrypt1/work/minis
<<<<<<< HEAD
Host mii-root
HostName 202.61.207.139
Port 22
@@ -106,13 +135,22 @@ Host ncs-tailscale
User tuant
IdentityFile /mnt/veracrypt1/genesis
||||||| e9d53f0
# Work
=======
>>>>>>> clean_emacs
Host ncs-head
HostName 132.252.68.50
Port 2122
User tuan-dat.tran
IdentityFile /mnt/veracrypt1/genesis
ForwardX11 yes
<<<<<<< HEAD
ProxyJump ncs-tailscale
||||||| e9d53f0
=======
ProxyJump tail-pi
>>>>>>> clean_emacs
Host ncs-head-user
HostName 132.252.68.50
@@ -123,62 +161,44 @@ Host ncs-head-user
Host ncs2
HostName 192.168.1.13
Port 22
User tuan-dat.tran
Host ncs2 ncs2-user ncs-node1 ncs-node2 ncs-node2-user ncs-node3 ncs-node4 ncs-node5 ncs-node6 ncs-node7 ncs-wedge
Port 22
IdentityFile /mnt/veracrypt1/genesis
ProxyJump ncs-head
Host ncs2-user
HostName 192.168.1.13
Port 22
User user # tuan-dat.tran
IdentityFile /mnt/veracrypt1/genesis
ProxyJump ncs-head
Host ncs-node1
HostName 192.168.1.11
Port 22
User user
IdentityFile /mnt/veracrypt1/tudattr
ProxyJump ncs-head
Host ncs-node2
HostName 192.168.1.7
Port 22
User tuan-dat.tran
IdentityFile /mnt/veracrypt1/genesis
ProxyJump ncs-head
ForwardX11 yes
Host ncs-node2-user
HostName 192.168.1.7
Port 22
User user
IdentityFile /mnt/veracrypt1/tudattr
ProxyJump ncs-head
Host ncs-node3
Hostname 192.168.1.19
Port 22
User tuan-dat.tran
IdentityFile /mnt/veracrypt1/genesis
ForwardX11 yes
ProxyJump ncs-head
Host ncs-node3-user
Hostname 192.168.1.19
Port 22
User user
IdentityFile /mnt/veracrypt1/tudattr
ForwardX11 yes
ProxyJump ncs-head
Host ncs-node4
HostName 192.168.1.9
Port 22
User tuan-dat.tran
IdentityFile /mnt/veracrypt1/genesis
ProxyJump ncs-head
Host ncs-node4-user
HostName 192.168.1.9
@@ -189,18 +209,11 @@ Host ncs-node4-user
Host ncs-node5
HostName 192.168.1.15
Port 22
User tuan-dat.tran
IdentityFile /mnt/veracrypt1/genesis
ProxyJump ncs-head
Host ncs-node6
Hostname 192.168.1.17
Port 22
User tuan-dat.tran
IdentityFile /mnt/veracrypt1/genesis
# ForwardX11 yes
ProxyJump ncs-head
Host ncs-node6-user
Hostname 192.168.1.17
@@ -212,20 +225,53 @@ Host ncs-node6-user
Host ncs-node7
Hostname 192.168.1.18
Port 22
User tuan-dat.tran
IdentityFile /mnt/veracrypt1/genesis
ForwardX11 yes
ProxyJump ncs-head
Host ncs-wedge
Hostname 192.168.1.5
Port 22
User user
<<<<<<< HEAD
IdentityFile /mnt/veracrypt1/genesis
# ForwardX11 yes
ProxyJump ncs-head
||||||| e9d53f0
IdentityFile /mnt/veracrypt1/genesis
# ForwardX11 yes
ProxyJump ncs-head
Host ncs-local-server
HostName 192.168.1.1
Port 22
User tuan-dat.tran
IdentityFile /mnt/veracrypt1/tudattr
StrictHostKeyChecking no
Host ncs-local-server-user
HostName 192.168.1.1
Port 22
User user
IdentityFile /mnt/veracrypt1/tudattr
StrictHostKeyChecking no
Host ncs-local-server2
HostName 192.168.2.2
Port 22
User user
IdentityFile /mnt/veracrypt1/tudattr
StrictHostKeyChecking no
ProxyJump ncs-local-server
Host phone
Hostname 192.168.30.245
Port 2222
User tuan-dat.tran
IdentityFile /mnt/veracrypt1/genesis
=======
>>>>>>> clean_emacs
Host ncs-gpu
Hostname 192.168.1.21
Port 22
@@ -234,18 +280,29 @@ Host ncs-gpu
ForwardX11 yes
ProxyJump ncs-head
<<<<<<< HEAD
Host ncs-aws-iperf3
Hostname 18.185.5.191
Port 22
User ec2-user
IdentityFile /mnt/veracrypt1/work/aws_ncs.pem
||||||| e9d53f0
Host ncs-aws-iperf3
Hostname 18.185.5.191
Port 22
User ec2-user
IdentityFile /mnt/veracrypt1/aws_ncs.pem
=======
>>>>>>> clean_emacs
Host ami
Hostname 3.72.156.214
Port 22
User ubuntu
IdentityFile /mnt/veracrypt1/work/aws-rizk.pem
<<<<<<< HEAD
Host 5g-mec
Hostname 192.168.100.1
Port 22
@@ -264,3 +321,25 @@ Host minis
User tudattr
IdentityFile /mnt/veracrypt1/genesis
||||||| e9d53f0
=======
## 5g IANA
Host 5g-iana-mec
Hostname 192.168.100.1
Port 22
User udue
IdentityFile /mnt/veracrypt1/genesis
Host uulm-obu0 uulm-obu1
Port 22
User user
ProxyJump 5g-iana-mec
IdentityFile /mnt/veracrypt1/genesis
Host uulm-obu0
Hostname 192.168.201.7
Host uulm-obu1
Hostname 192.168.201.11
>>>>>>> clean_emacs

View File

@@ -1,606 +0,0 @@
#! perl -w
# Author: Bert Muennich
# Website: http://www.github.com/muennich/urxvt-perls
# License: GPLv2
# Use keyboard shortcuts to select and copy text.
# Usage: put the following lines in your .Xdefaults/.Xresources:
# URxvt.perl-ext-common: ...,keyboard-select
# URxvt.keysym.M-Escape: perl:keyboard-select:activate
# The following line overwrites the default Meta-s binding and allows to
# activate keyboard-select directly in backward search mode:
# URxvt.keysym.M-s: perl:keyboard-select:search
# Use Meta-Escape to activate selection mode, then use the following keys:
# h/j/k/l: Move cursor left/down/up/right (also with arrow keys)
# g/G/0/^/$/H/M/L/f/F/;/,/w/W/b/B/e/E: More vi-like cursor movement keys
# '/'/?: Start forward/backward search
# n/N: Repeat last search, N: in reverse direction
# Ctrl-f/b: Scroll down/up one screen
# Ctrl-d/u: Scroll down/up half a screen
# v/V/Ctrl-v: Toggle normal/linewise/blockwise selection
# y/Return: Copy selection to primary buffer, Return: quit afterwards
# Y: Copy selected lines to primary buffer or cursor line and quit
# q/Escape: Quit keyboard selection mode
# Options:
# URxvt.keyboard-select.clipboard: If true, copy to clipboard too
use strict;
sub on_start{
my ($self) = @_;
$self->{clipboard} = $self->x_resource_boolean('keyboard-select.clipboard');
$self->{patterns}{'w'} = qr/\w[^\w\s]|\W\w|\s\S/;
$self->{patterns}{'W'} = qr/\s\S/;
$self->{patterns}{'b'} = qr/.*(?:\w[^\w\s]|\W\w|\s\S)/;
$self->{patterns}{'B'} = qr/.*\s\S/;
$self->{patterns}{'e'} = qr/[^\w\s](?=\w)|\w(?=\W)|\S(?=\s|$)/;
$self->{patterns}{'E'} = qr/\S(?=\s|$)/;
()
}
sub on_action {
my ($self, $action) = @_;
on_user_command($self, "keyboard-select:" . $action);
}
sub on_user_command {
my ($self, $cmd) = @_;
if (not $self->{active}) {
if ($cmd eq 'keyboard-select:activate') {
activate($self);
} elsif ($cmd eq 'keyboard-select:search') {
activate($self, 1);
}
}
()
}
sub key_press {
my ($self, $event, $keysym, $char) = @_;
my $key = chr($keysym);
if (lc($key) eq 'c' && $event->{state} & urxvt::ControlMask) {
deactivate($self);
} elsif ($self->{search}) {
if ($keysym == 0xff1b) {
if ($self->{search_mode}) {
deactivate($self);
} else {
$self->{search} = '';
status_area($self);
}
} elsif ($keysym == 0xff08) {
$self->{search} = substr($self->{search}, 0, -1);
if (not $self->{search} and $self->{search_mode}) {
deactivate($self);
} else {
status_area($self);
}
} elsif ($keysym == 0xff0d ||
(lc($key) eq 'm' && $event->{state} & urxvt::ControlMask)) {
my $txt = substr($self->{search}, 1);
if ($txt) {
$self->{pattern} = ($txt =~ m/[[:upper:]]/) ? qr/\Q$txt\E/ :
qr/\Q$txt\E/i;
} elsif ($self->{pattern}) {
delete $self->{pattern};
}
$self->{search} = '';
$self->screen_cur($self->{srhcr}, $self->{srhcc});
if (not find_next($self)) {
if ($self->{search_mode}) {
deactivate($self);
} else {
status_area($self);
}
}
} elsif (length($char) > 0) {
$self->{search} .= $self->locale_decode($char);
my $txt = substr($self->{search}, 1);
if ($txt) {
$self->{pattern} = ($txt =~ m/[[:upper:]]/) ? qr/\Q$txt\E/ :
qr/\Q$txt\E/i;
} elsif ($self->{pattern}) {
delete $self->{pattern};
}
$self->screen_cur($self->{srhcr}, $self->{srhcc});
find_next($self);
status_area($self);
}
} elsif ($self->{move_to}) {
if ($keysym == 0xff1b) {
$self->{move_to} = 0;
status_area($self);
} elsif (length($char) > 0) {
$self->{move_to} = 0;
$self->{patterns}{'f-1'} = qr/^.*\Q$key\E/;
$self->{patterns}{'f+1'} = qr/^.+?\Q$key\E/;
move_to($self, ';');
status_area($self);
}
} elsif ($keysym == 0xff1b || lc($key) eq 'q') {
deactivate($self);
} elsif (lc($key) eq 'y' || $keysym == 0xff0d ||
(lc($key) eq 'm' && $event->{state} & urxvt::ControlMask)) {
my $quit = 0;
if ($key eq 'Y' && $self->{select} ne 'l') {
$quit = !$self->{select};
toggle_select($self, 'l');
}
if ($self->{select}) {
my ($br, $bc, $er, $ec) = calc_span($self);
$ec = $self->line($er)->l if $self->{select} eq 'l';
$self->selection_beg($br, $bc);
$self->selection_end($er, $ec);
$self->selection_make($event->{time}, $self->{select} eq 'b');
if ($self->{clipboard}) {
$self->selection($self->selection(), 1);
$self->selection_grab($event->{time}, 1);
}
if (lc($key) eq 'y') {
$self->selection_beg(1, 0);
$self->selection_end(1, 0);
$self->{select} = '';
status_area($self);
$self->want_refresh();
} else {
$quit = 1;
}
}
if ($quit) {
deactivate($self);
}
} elsif ($key eq 'V') {
toggle_select($self, 'l');
} elsif ($key eq 'v') {
if ($event->{state} & urxvt::ControlMask) {
toggle_select($self, 'b');
} else {
toggle_select($self, 'n');
}
} elsif ($key eq 'k' || $keysym == 0xff52) {
move_cursor($self, 'k');
} elsif ($key eq 'j' || $keysym == 0xff54) {
move_cursor($self, 'j');
} elsif ($key eq 'h' || $keysym == 0xff51) {
move_cursor($self, 'h');
} elsif ($key eq 'l' || $keysym == 0xff53) {
move_cursor($self, 'l');
} elsif ($keysym == 0xff57) {
move_cursor($self, '$');
} elsif ($keysym == 0xff50) {
move_cursor($self, '^');
} elsif ('gG0^$HML' =~ m/\Q$key\E/ ||
('fbdu' =~ m/\Q$key\E/ && $event->{state} & urxvt::ControlMask)) {
move_cursor($self, $key);
} elsif (lc($key) eq 'f') {
$self->{move_to} = 1;
$self->{move_dir} = $key eq 'F' ? -1 : 1;
status_area($self, $key);
} elsif (';,wWbBeE' =~ m/\Q$key\E/) {
move_to($self, $key);
} elsif ($key eq '/' || $key eq '?') {
$self->{search} = $key;
$self->{search_dir} = $key eq '?' ? -1 : 1;
($self->{srhcr}, $self->{srhcc}) = $self->screen_cur();
status_area($self);
} elsif (lc($key) eq 'n') {
find_next($self, $self->{search_dir} * ($key eq 'N' ? -1 : 1));
}
return 1;
}
sub move_cursor {
my ($self, $key) = @_;
my ($cr, $cc) = $self->screen_cur();
my $line = $self->line($cr);
if ($key eq 'k' && $line->beg > $self->top_row) {
$cr = $line->beg - 1;
} elsif ($key eq 'j' && $line->end < $self->nrow - 1) {
$cr = $line->end + 1;
} elsif ($key eq 'h' && $self->{offset} > 0) {
$self->{offset} = $line->offset_of($cr, $cc) - 1;
$self->{dollar} = 0;
} elsif ($key eq 'l' && $self->{offset} < $line->l - 1) {
++$self->{offset};
} elsif ($key eq 'f' || $key eq 'd') {
my $vs = $self->view_start() +
($key eq 'd' ? $self->nrow / 2 : $self->nrow - 1);
$vs = 0 if $vs > 0;
$cr += $vs - $self->view_start($vs);
} elsif ($key eq 'b' || $key eq 'u') {
my $vs = $self->view_start() -
($key eq 'u' ? $self->nrow / 2 : $self->nrow - 1);
$vs = $self->top_row if $vs < $self->top_row;
$cr += $vs - $self->view_start($vs);
} elsif ($key eq 'g') {
($cr, $self->{offset}) = ($self->top_row, 0);
$self->{dollar} = 0;
} elsif ($key eq 'G') {
($cr, $self->{offset}) = ($self->nrow - 1, 0);
$self->{dollar} = 0;
} elsif ($key eq '0') {
$self->{offset} = 0;
$self->{dollar} = 0;
} elsif ($key eq '^') {
my $ltxt = $self->special_decode($line->t);
while ($ltxt =~ s/^( *)\t/$1 . " " x (8 - length($1) % 8)/e) {}
$self->{offset} = $ltxt =~ m/^ +/ ? $+[0] : 0;
$self->{dollar} = 0;
} elsif ($key eq '$') {
my $co = $line->offset_of($cr, $cc);
$self->{dollar} = $co + 1;
$self->{offset} = $line->l - 1;
} elsif ($key eq 'H') {
$cr = $self->view_start();
} elsif ($key eq 'M') {
$cr = $self->view_start() + $self->nrow / 2;
} elsif ($key eq 'L') {
$cr = $self->view_start() + $self->nrow - 1;
}
$line = $self->line($cr);
$cc = $self->{dollar} || $self->{offset} >= $line->l ? $line->l - 1 :
$self->{offset};
$self->screen_cur($line->coord_of($cc));
status_area($self);
$self->want_refresh();
()
}
sub move_to {
my ($self, $key) = @_;
my ($cr, $cc) = $self->screen_cur();
my $line = $self->line($cr);
my $offset = $self->{offset};
my ($dir, $pattern);
my ($wrap, $found) = (0, 0);
if ($key eq ';' || $key eq ',') {
$dir = $self->{move_dir} * ($key eq ',' ? -1 : 1);
$pattern = $self->{patterns}{sprintf('f%+d', $dir)};
return if not $pattern;
} else {
if (lc($key) eq 'b') {
$dir = -1;
} else {
$dir = 1;
++$offset if lc($key) eq 'e';
}
$pattern = $self->{patterns}{$key};
$wrap = 1;
}
if ($dir > 0) {
NEXTDOWN: my $text = substr($line->t, $offset);
if ($text =~ m/$pattern/) {
$offset += $+[0] - 1;
$found = 1;
} elsif ($wrap && $line->end + 1 < $self->nrow) {
$cr = $line->end + 1;
$line = $self->line($cr);
$offset = 0;
if (lc($key) eq 'e') {
goto NEXTDOWN;
} else {
$found = 1;
}
}
} elsif ($dir < 0) {
NEXTUP: my $text = substr($line->t, 0, $offset);
if ($text =~ m/$pattern/) {
$offset += $+[0] - length($text) - 1;
$found = 1;
} elsif ($wrap) {
if ($offset > 0) {
$offset = 0;
$found = 1;
} elsif ($line->beg > $self->top_row) {
$cr = $line->beg - 1;
$line = $self->line($cr);
$offset = $line->l;
goto NEXTUP;
}
}
}
if ($found) {
$self->{dollar} = 0;
$self->{offset} = $offset;
$self->screen_cur($line->coord_of($offset));
$self->want_refresh();
}
()
}
sub find_next {
my ($self, $dir) = @_;
return if not $self->{pattern};
$dir = $self->{search_dir} if not $dir;
my ($cr, $cc) = $self->screen_cur();
my $line = $self->line($cr);
my $offset = $line->offset_of($cr, $cc);
my $text;
my $found = 0;
++$offset if $dir > 0;
while (not $found) {
if ($dir > 0) {
$text = substr($line->t, $offset);
if ($text =~ m/$self->{pattern}/) {
$found = 1;
$offset += $-[0];
} else {
last if $line->end >= $self->nrow;
$line = $self->line($line->end + 1);
$offset = 0;
}
} else {
$text = substr($line->t, 0, $offset);
if ($text =~ m/$self->{pattern}/) {
$found = 1;
$offset = $-[0] while $text =~ m/$self->{pattern}/g;
} else {
last if $line->beg <= $self->top_row;
$line = $self->line($line->beg - 1);
$offset = $line->l;
}
}
}
if ($found) {
$self->{dollar} = 0;
$self->{offset} = $offset;
$self->screen_cur($line->coord_of($offset));
status_area($self);
$self->want_refresh();
}
return $found;
}
sub tt_write {
return 1;
}
sub refresh {
my ($self) = @_;
my ($cr, $cc) = $self->screen_cur();
# scroll the current cursor position into visible area
if ($cr < $self->view_start()) {
$self->view_start($cr);
} elsif ($cr >= $self->view_start() + $self->nrow) {
$self->view_start($cr - $self->nrow + 1);
}
if ($self->{select}) {
my ($hl, $reverse_cursor);
my ($br, $bc, $er, $ec) = calc_span($self);
if ($self->x_resource('highlightColor')) {
$hl = urxvt::RS_Sel;
$reverse_cursor = 0;
} else {
$hl = urxvt::RS_RVid;
$reverse_cursor = $self->{select} ne 'l';
}
if ($self->{select} eq 'b') {
my $co = $self->line($cr)->offset_of($cr, $cc);
my $dollar = $self->{dollar} && $co >= $self->{dollar} - 1;
my $r = $br;
while ($r <= $er) {
my $line = $self->line($r);
if ($bc < $line->l) {
$ec = $line->l if $dollar;
my ($br, $bc) = $line->coord_of($bc);
my ($er, $ec) = $line->coord_of($ec <= $line->l ? $ec : $line->l);
$self->scr_xor_span($br, $bc, $er, $ec, $hl);
} elsif ($r == $cr) {
$reverse_cursor = 0;
}
$r = $line->end + 1;
}
} else {
$self->scr_xor_span($br, $bc, $er, $ec, $hl);
}
if ($reverse_cursor) {
# make the cursor visible again
$self->scr_xor_span($cr, $cc, $cr, $cc + 1, $hl);
}
}
()
}
sub activate {
my ($self, $search) = @_;
$self->{active} = 1;
$self->{select} = '';
$self->{dollar} = 0;
$self->{move_to} = 0;
if ($search) {
$self->{search} = '?';
$self->{search_dir} = -1;
$self->{search_mode} = 1;
} else {
$self->{search} = '';
$self->{search_mode} = 0;
}
($self->{oldcr}, $self->{oldcc}) = $self->screen_cur();
($self->{srhcr}, $self->{srhcc}) = $self->screen_cur();
$self->{old_view_start} = $self->view_start();
$self->{old_pty_ev_events} = $self->pty_ev_events(urxvt::EV_NONE);
my $line = $self->line($self->{oldcr});
$self->{offset} = $line->offset_of($self->{oldcr}, $self->{oldcc});
$self->selection_beg(1, 0);
$self->selection_end(1, 0);
$self->enable(
key_press => \&key_press,
refresh_begin => \&refresh,
refresh_end => \&refresh,
tt_write => \&tt_write,
);
if ($self->{offset} >= $line->l) {
$self->{offset} = $line->l > 0 ? $line->l - 1 : 0;
$self->screen_cur($line->coord_of($self->{offset}));
$self->want_refresh();
}
$self->{overlay_len} = 0;
status_area($self);
()
}
sub deactivate {
my ($self) = @_;
$self->selection_beg(1, 0);
$self->selection_end(1, 0);
delete $self->{overlay} if $self->{overlay};
$self->disable("key_press", "refresh_begin", "refresh_end", "tt_write");
$self->screen_cur($self->{oldcr}, $self->{oldcc});
$self->view_start($self->{old_view_start});
$self->pty_ev_events($self->{old_pty_ev_events});
$self->want_refresh();
$self->{active} = 0;
()
}
sub status_area {
my ($self, $extra) = @_;
my ($stat, $stat_len);
if ($self->{search}) {
$stat_len = $self->ncol;
$stat = $self->{search} . ' ' x ($stat_len - length($self->{search}));
} else {
if ($self->{select}) {
$stat = "-V" . ($self->{select} ne 'n' ? uc($self->{select}) : "") . "- ";
}
if ($self->top_row == 0) {
$stat .= "All";
} elsif ($self->view_start() == $self->top_row) {
$stat .= "Top";
} elsif ($self->view_start() == 0) {
$stat .= "Bot";
} else {
$stat .= sprintf("%2d%%",
($self->top_row - $self->view_start) * 100 / $self->top_row);
}
$stat = "$extra $stat" if $extra;
$stat_len = length($stat);
}
if (!$self->{overlay} || $self->{overlay_len} != $stat_len) {
delete $self->{overlay} if $self->{overlay};
$self->{overlay} = $self->overlay(-1, -1, $stat_len, 1,
urxvt::OVERLAY_RSTYLE, 0);
$self->{overlay_len} = $stat_len;
}
$self->{overlay}->set(0, 0, $self->special_encode($stat));
$self->{overlay}->show();
()
}
sub toggle_select {
my ($self, $mode) = @_;
if ($self->{select} eq $mode) {
$self->{select} = '';
} else {
if (not $self->{select}) {
($self->{ar}, $self->{ac}) = $self->screen_cur();
}
$self->{select} = $mode;
}
status_area($self);
$self->want_refresh();
()
}
sub calc_span {
my ($self) = @_;
my ($cr, $cc) = $self->screen_cur();
my ($br, $bc, $er, $ec);
if ($self->{select} eq 'b') {
$br = $self->line($cr)->beg;
$bc = $self->line($cr)->offset_of($cr, $cc);
$er = $self->line($self->{ar})->beg;
$ec = $self->line($self->{ar})->offset_of($self->{ar}, $self->{ac});
($br, $er) = ($er, $br) if $br > $er;
($bc, $ec) = ($ec, $bc) if $bc > $ec;
} else {
if ($cr < $self->{ar}) {
($br, $bc, $er, $ec) = ($cr, $cc, $self->{ar}, $self->{ac});
} elsif ($cr > $self->{ar}) {
($br, $bc, $er, $ec) = ($self->{ar}, $self->{ac}, $cr, $cc);
} else {
($br, $er) = ($cr, $cr);
($bc, $ec) = $cc < $self->{ac} ? ($cc, $self->{ac}) : ($self->{ac}, $cc);
}
}
if ($self->{select} eq 'l') {
($br, $er) = ($self->line($br)->beg, $self->line($er)->end);
($bc, $ec) = (0, $self->ncol);
} else {
++$ec;
}
return ($br, $bc, $er, $ec);
}