diff --git a/README.md b/README.md index d517a56..3729095 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ -# dotfiles +![i3-wm](screenshot/lap.png) +![i3-wm](screenshot/lock.png) -Dotfiles for i3-wm, zsh, polybar, neomutt etc. \ No newline at end of file diff --git a/alacritty/alacritty.yml b/alacritty/alacritty.yml new file mode 100644 index 0000000..472f58c --- /dev/null +++ b/alacritty/alacritty.yml @@ -0,0 +1,10 @@ + +font: + normal: + family: Envy Code R + size: 8.0 + +window: + padding: + x: 18 + y: 14 diff --git a/dunst/dunstrc b/dunst/dunstrc new file mode 100644 index 0000000..a7f82e2 --- /dev/null +++ b/dunst/dunstrc @@ -0,0 +1,326 @@ +[global] + ### Display ### + + # Which monitor should the notifications be displayed on. + monitor = 0 + + # Display notification on focused monitor. Possible modes are: + # mouse: follow mouse pointer + # keyboard: follow window with keyboard focus + # none: don't follow anything + # + # "keyboard" needs a window manager that exports the + # _NET_ACTIVE_WINDOW property. + # This should be the case for almost all modern window managers. + # + # If this option is set to mouse or keyboard, the monitor option + # will be ignored. + follow = mouse + + # The geometry of the window: + # [{width}]x{height}[+/-{x}+/-{y}] + # The geometry of the message window. + # The height is measured in number of notifications everything else + # in pixels. If the width is omitted but the height is given + # ("-geometry x2"), the message window expands over the whole screen + # (dmenu-like). If width is 0, the window expands to the longest + # message displayed. A positive x is measured from the left, a + # negative from the right side of the screen. Y is measured from + # the top and down respectively. + # The width can be negative. In this case the actual width is the + # screen width minus the width defined in within the geometry option. + geometry = "400x200-30+20" + + # Show how many messages are currently hidden (because of geometry). + indicate_hidden = yes + + # Shrink window if it's smaller than the width. Will be ignored if + # width is 0. + shrink = no + + # The transparency of the window. Range: [0; 100]. + # This option will only work if a compositing window manager is + # present (e.g. xcompmgr, compiz, etc.). + transparency = 0 + + # The height of the entire notification. If the height is smaller + # than the font height and padding combined, it will be raised + # to the font height and padding. + notification_height = 60 + + # Draw a line of "separator_height" pixel height between two + # notifications. + # Set to 0 to disable. + separator_height = 2 + + # Padding between text and separator. + padding = 8 + + # Horizontal padding. + horizontal_padding = 8 + + # Defines width in pixels of frame around the notification window. + # Set to 0 to disable. + frame_width = 3 + + # Defines color of the frame around the notification window. + frame_color = "#000000" + + # Define a color for the separator. + # possible values are: + # * auto: dunst tries to find a color fitting to the background; + # * foreground: use the same color as the foreground; + # * frame: use the same color as the frame; + # * anything else will be interpreted as a X color. + separator_color = frame + + # Sort messages by urgency. + sort = yes + + # Don't remove messages, if the user is idle (no mouse or keyboard input) + # for longer than idle_threshold seconds. + # Set to 0 to disable. + # Transient notifications ignore this setting. + idle_threshold = 120 + + ### Text ### + + font = Envy Code R 14 + + # The spacing between lines. If the height is smaller than the + # font height, it will get raised to the font height. + line_height = 0 + + # Possible values are: + # full: Allow a small subset of html markup in notifications: + # bold + # italic + # strikethrough + # underline + # + # For a complete reference see + # . + # + # strip: This setting is provided for compatibility with some broken + # clients that send markup even though it's not enabled on the + # server. Dunst will try to strip the markup but the parsing is + # simplistic so using this option outside of matching rules for + # specific applications *IS GREATLY DISCOURAGED*. + # + # no: Disable markup parsing, incoming notifications will be treated as + # plain text. Dunst will not advertise that it has the body-markup + # capability if this is set as a global setting. + # + # It's important to note that markup inside the format option will be parsed + # regardless of what this is set to. + markup = full + + # The format of the message. Possible variables are: + # %a appname + # %s summary + # %b body + # %i iconname (including its path) + # %I iconname (without its path) + # %p progress value if set ([ 0%] to [100%]) or nothing + # %n progress value if set without any extra characters + # %% Literal % + # Markup is allowed + format = "%s\n%b" + + # Alignment of message text. + # Possible values are "left", "center" and "right". + alignment = left + + # Show age of message if message is older than show_age_threshold + # seconds. + # Set to -1 to disable. + show_age_threshold = 60 + + # Split notifications into multiple lines if they don't fit into + # geometry. + word_wrap = yes + + # When word_wrap is set to no, specify where to ellipsize long lines. + # Possible values are "start", "middle" and "end". + ellipsize = middle + + # Ignore newlines '\n' in notifications. + ignore_newline = no + + # Merge multiple notifications with the same content + stack_duplicates = true + + # Hide the count of merged notifications with the same content + hide_duplicate_count = false + + # Display indicators for URLs (U) and actions (A). + show_indicators = yes + + ### Icons ### + + # Align icons left/right/off + icon_position = left + + # Scale larger icons down to this size, set to 0 to disable + max_icon_size = 32 + + # Paths to default icons. + icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/ + + ### History ### + + # Should a notification popped up from history be sticky or timeout + # as if it would normally do. + sticky_history = yes + + # Maximum amount of notifications kept in history + history_length = 20 + + ### Misc/Advanced ### + + # dmenu path. + dmenu = /usr/bin/dmenu -p dunst: + + # Browser for opening urls in context menu. + browser = /usr/bin/firefox -new-tab + + # Always run rule-defined scripts, even if the notification is suppressed + always_run_script = true + + # Define the title of the windows spawned by dunst + title = Dunst + + # Define the class of the windows spawned by dunst + class = Dunst + + # Print a notification on startup. + # This is mainly for error detection, since dbus (re-)starts dunst + # automatically after a crash. + startup_notification = false + + ### Legacy + + # Use the Xinerama extension instead of RandR for multi-monitor support. + # This setting is provided for compatibility with older nVidia drivers that + # do not support RandR and using it on systems that support RandR is highly + # discouraged. + # + # By enabling this setting dunst will not be able to detect when a monitor + # is connected or disconnected which might break follow mode if the screen + # layout changes. + force_xinerama = false + +# Experimental features that may or may not work correctly. Do not expect them +# to have a consistent behaviour across releases. +[experimental] + # Calculate the dpi to use on a per-monitor basis. + # If this setting is enabled the Xft.dpi value will be ignored and instead + # dunst will attempt to calculate an appropriate dpi value for each monitor + # using the resolution and physical size. This might be useful in setups + # where there are multiple screens with very different dpi values. + per_monitor_dpi = false + +[shortcuts] + + # Shortcuts are specified as [modifier+][modifier+]...key + # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2", + # "mod3" and "mod4" (windows-key). + # Xev might be helpful to find names for keys. + + # Close notification. + close = ctrl+space + + # Close all notifications. + close_all = ctrl+shift+space + + # Redisplay last message(s). + # On the US keyboard layout "grave" is normally above TAB and left + # of "1". Make sure this key actually exists on your keyboard layout, + # e.g. check output of 'xmodmap -pke' + history = ctrl+grave + + # Context menu. + context = ctrl+shift+period + +[urgency_low] + # IMPORTANT: colors have to be defined in quotation marks. + # Otherwise the "#" and following would be interpreted as a comment. + background = "#000000" + foreground = "#888888" + timeout = 10 + # Icon for notifications with low urgency, uncomment to enable + #icon = /path/to/icon + +[urgency_normal] + background = "#000000" + foreground = "#ffffff" + timeout = 10 + # Icon for notifications with normal urgency, uncomment to enable + #icon = /path/to/icon + +[urgency_critical] + background = "#900000" + foreground = "#ffffff" + frame_color = "#ff0000" + timeout = 0 + # Icon for notifications with critical urgency, uncomment to enable + #icon = /path/to/icon + +# Every section that isn't one of the above is interpreted as a rules to +# override settings for certain messages. +# Messages can be matched by "appname", "summary", "body", "icon", "category", +# "msg_urgency" and you can override the "timeout", "urgency", "foreground", +# "background", "new_icon" and "format". +# Shell-like globbing will get expanded. +# +# SCRIPTING +# You can specify a script that gets run when the rule matches by +# setting the "script" option. +# The script will be called as follows: +# script appname summary body icon urgency +# where urgency can be "LOW", "NORMAL" or "CRITICAL". +# +# NOTE: if you don't want a notification to be displayed, set the format +# to "". +# NOTE: It might be helpful to run dunst -print in a terminal in order +# to find fitting options for rules. + +#[espeak] +# summary = "*" +# script = dunst_espeak.sh + +#[script-test] +# summary = "*script*" +# script = dunst_test.sh + +#[ignore] +# # This notification will not be displayed +# summary = "foobar" +# format = "" + +#[history-ignore] +# # This notification will not be saved in history +# summary = "foobar" +# history_ignore = yes + +#[signed_on] +# appname = Pidgin +# summary = "*signed on*" +# urgency = low +# +#[signed_off] +# appname = Pidgin +# summary = *signed off* +# urgency = low +# +#[says] +# appname = Pidgin +# summary = *says* +# urgency = critical +# +#[twitter] +# appname = Pidgin +# summary = *twitter.com* +# urgency = normal +# +# vim: ft=cfg diff --git a/font/DejaVuSansMono.zip b/font/DejaVuSansMono.zip new file mode 100644 index 0000000..e81fc80 Binary files /dev/null and b/font/DejaVuSansMono.zip differ diff --git a/font/Envy Code R.ttf b/font/Envy Code R.ttf new file mode 100644 index 0000000..e8e4a60 Binary files /dev/null and b/font/Envy Code R.ttf differ diff --git a/font/Iosevka-Nerd-Font.ttf b/font/Iosevka-Nerd-Font.ttf new file mode 100644 index 0000000..bbb351c Binary files /dev/null and b/font/Iosevka-Nerd-Font.ttf differ diff --git a/i3/config b/i3/config new file mode 100644 index 0000000..69d06c6 --- /dev/null +++ b/i3/config @@ -0,0 +1,257 @@ +# This file has been auto-generated by i3-config-wizard(1). +# It will not be overwritten, so edit it as you like. +# +# Should you change your keyboard layout some time, delete +# this file and re-run i3-config-wizard(1). +# + +# i3 config file (v4) +# +# Please see https://i3wm.org/docs/userguide.html for a complete reference! + +set $mod Mod4 + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. +#font pango:Iosevka Fixed Medium 0 + +# 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: Envy Code R 10 + +# 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 +# screen before suspend. Use loginctl lock-session to lock your screen. +exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --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. +#exec --no-startup-id nm-applet + +# Use pactl to adjust volume in PulseAudio. +set $refresh_i3status killall -SIGUSR1 i3status +bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status +bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status +bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status +bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status + +#multimedia keys +bindsym XF86AudioPlay exec playerctl play-pause +bindsym XF86AudioNext exec playerctl next +bindsym XF86AudioPrev exec playerctl previous +# Use Mouse+$mod to drag floating windows to their wanted position +floating_modifier $mod + +# start a terminal +bindsym $mod+Return exec --no-startup-id alacritty +bindsym $mod+Shift+Return exec --no-startup-id st + +# kill focused window +bindsym $mod+Shift+q kill + +# start dmenu (a program launcher) +bindsym $mod+d exec rofi -show drun -theme ~/.config/rofi/menu.rasi +# 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. +# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+semicolon focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+j move left +bindsym $mod+Shift+k move down +bindsym $mod+Shift+l move up +bindsym $mod+Shift+semicolon 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 + +# split in horizontal orientation +bindsym $mod+h split h + +# split in vertical orientation +bindsym $mod+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# window borders +default_border none +#border_radius 4 + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# focus the parent container +bindsym $mod+a focus parent + +# focus the child container +#bindsym $mod+d focus child + +# 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: " +set $ws2 "2: " +set $ws3 "3: " +set $ws4 "4:嗢 " +set $ws5 "5: " +set $ws6 "6: " +set $ws7 "7: " +set $ws8 "8" +set $ws9 "9" +set $ws10 "10: " + +# switch to workspace +bindsym $mod+1 workspace number $ws1 +bindsym $mod+2 workspace number $ws2 +bindsym $mod+3 workspace number $ws3 +bindsym $mod+4 workspace number $ws4 +bindsym $mod+5 workspace number $ws5 +bindsym $mod+6 workspace number $ws6 +bindsym $mod+7 workspace number $ws7 +bindsym $mod+8 workspace number $ws8 +bindsym $mod+9 workspace number $ws9 +bindsym $mod+0 workspace number $ws10 + +# move focused container to workspace +bindsym $mod+Shift+1 move container to workspace number $ws1 +bindsym $mod+Shift+2 move container to workspace number $ws2 +bindsym $mod+Shift+3 move container to workspace number $ws3 +bindsym $mod+Shift+4 move container to workspace number $ws4 +bindsym $mod+Shift+5 move container to workspace number $ws5 +bindsym $mod+Shift+6 move container to workspace number $ws6 +bindsym $mod+Shift+7 move container to workspace number $ws7 +bindsym $mod+Shift+8 move container to workspace number $ws8 +bindsym $mod+Shift+9 move container to workspace number $ws9 +bindsym $mod+Shift+0 move container to workspace number $ws10 + +#assign +assign [class="Firefox"] $ws2 +assign [class="TelegramDesktop"] $ws9 +assign [class="Element"] $ws7 +assign [class="tutanota-desktop"] $ws8 +assign [class="qBittorrent"] $ws10 +assign [class="vlc"] $ws4 +assign [class="thunderbird"] $ws3 +assign [class="Padloc"] $ws5 +#assign [class="Nextcloud"] $ws6 + +#back and forth +bindsym $mod+b workspace back_and_forth + +#sticky windows +bindsym $mod+Shift+s sticky toggle + +# reload the configuration file +bindsym $mod+Shift+c reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym $mod+Shift+r restart +# exit i3 (logs you out of your X session) +bindsym $mod+Shift+e exec ~/.config/i3/logout.sh + +# resize window (you can also use the mouse for that) +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym j resize shrink width 10 px or 10 ppt + bindsym k resize grow height 10 px or 10 ppt + bindsym l resize shrink height 10 px or 10 ppt + bindsym semicolon resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape or $mod+r + bindsym Return mode "default" + bindsym Escape mode "default" + bindsym $mod+r mode "default" +} + +bindsym $mod+r mode "resize" + +bar { + status_command LC_ALL=C i3status -c ~/.config/i3/i3status/config + font pango:Envy Code R 10 + position top + colors { + background #000000 + # statusline #00ff00 + separator #ffb25a + active_workspace #4c7899 #4c7899 #ffffff + focused_workspace #ffb25a #ffb25a #000000 +} +} +##-c ~/.config/i3/i3status/config +bindsym XF86MonBrightnessUp exec xbacklight -inc 5 +bindsym XF86MonBrightnessDown exec xbacklight -dec 5 + +#exec_always --no-startup-id wal -i ~/Downloads/d1.png +exec_always --no-startup-id ~/.config/i3/low_bat.sh +exec_always --no-startup-id picom --config ~/.config/picom.conf +exec_always --no-startup-id feh --bg-center ~/Downloads/d1.png +#exec_always --no-startup-id xautolock -locker ~/.config/i3/lock.sh -time 3 +#exec_always --no-startup-id ~/.config/lowBat.sh +exec_always --no-startup-id setxkbmap -option caps:swapescape +bindsym $mod+Shift+x exec --no-startup-id ~/.config/i3/lock/lock.sh + +#client.focused #808080 #808080 #ffffff #808080 #0000ff + +#bindsym $mod+Shift+p exec --no-startup-id ~/Downloads/lw.AppImage +bindsym $mod+Shift+t exec --no-startup-id ~/Downloads/tutanota.AppImage --no-sandbox +bindsym $mod+Shift+g exec --no-startup-id signal-desktop --no-sandbox +bindsym $mod+Shift+u exec --no-startup-id ~/Downloads/Padloc.AppImage --no-sandbox +bindsym $mod+Shift+n exec --no-startup-id ~/Downloads/nextcloud.AppImage + +bindsym $mod+Shift+o exec --no-startup-id scrot +bindsym $mod+Shift+i exec --no-startup-id ~/.config/i3/touchpad_toggle.sh +bindsym $mod+Shift+m exec ( st -e cava & st -e cmus ); workspace 10; layout splitv; +bindsym $mod+Shift+f exec --no-startup-id st -e nnn + +### i3-gaps stuff ### + +# Necessary for i3-gaps to work properly (pixel can be any value) +for_window [class="^.*"] border pixel 0 + +# Smart Gaps +smart_gaps on + +# Smart Borders +smart_borders on +border_radius 5 + +# Set inner/outer gaps +gaps inner 10 +gaps outer 6 + +client.focused #ffffcc #000000 #ffffcc #2e9ef4 #ffffcE diff --git a/i3/lock/icon.png b/i3/lock/icon.png new file mode 100644 index 0000000..ad8d7d1 Binary files /dev/null and b/i3/lock/icon.png differ diff --git a/i3/lock/lock.sh b/i3/lock/lock.sh new file mode 100755 index 0000000..dc27b1c --- /dev/null +++ b/i3/lock/lock.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +icon="$HOME/.config/i3/lock/icon.png" +tmpbg='/tmp/screen.png' + +(( $# )) && { icon=$1; } + +scrot "$tmpbg" +convert "$tmpbg" -scale 10% -scale 1000% "$tmpbg" +convert "$tmpbg" "$icon" -gravity center -composite -matte "$tmpbg" +i3lock -u -i "$tmpbg" diff --git a/i3/logout.sh b/i3/logout.sh new file mode 100755 index 0000000..7010a69 --- /dev/null +++ b/i3/logout.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +o0="﫼" +o1="" +o2="" +o3="" +o4="" +a1="1" +a2="0" +option="$o4\n$o1\n$o3\n$o2\n$o0" +answer="$a2\n$a1" +chosen="$(echo -e "$option" | rofi -theme ~/.config/rofi/powermenu/powermenu.rasi -lines 5 -dmenu)" +if [ -z "$chosen" ]; then + exit +else + sure="$(echo -e "$answer" | rofi -theme ~/.config/rofi/powermenu/powermenu-confirm.rasi -lines 2 -dmenu)" + case $chosen$sure in + $o0$a1) + i3-msg exit;; + $o1$a1) + systemctl suspend;; + $o2$a1) + reboot;; + $o3$a1) + poweroff;; + $o4$a1) + exec bash ~/.config/i3/lock/lock.sh;; + esac +fi diff --git a/i3/low_bat.sh b/i3/low_bat.sh new file mode 100755 index 0000000..46a6d67 --- /dev/null +++ b/i3/low_bat.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +bat_percent=$(acpi -b| grep -P -o '[0-9]+(?=%)') +bat_status=$(acpi -b| grep -c 'Charging') +bat_full=$(acpi -b | grep -c "Full") + +if [ $bat_status -eq 0 -a $bat_percent -le 15 ]; then + exec /usr/bin/notify-send -u critical -t 10000 "Low Battery, Please Charge" +fi +if [ $bat_full -eq 1 -a $bat_percent -eq 100 ]; then + exec notify-send "Full Charge" +fi + diff --git a/i3status/config b/i3status/config new file mode 100644 index 0000000..0974cc4 --- /dev/null +++ b/i3status/config @@ -0,0 +1,59 @@ +general { + colors = true + interval = 5 + color_good = "#2AA198" + color_bad = "#586E75" + color_degraded = "#DC322F" + output_format = i3bar +} + +order += "disk /" +order += "cpu_usage" +order += "wireless wlp2s0" +order += "battery all" +order += "volume master" +order += "tztime local" +order += "time" + +disk "/" { + format = "  %free " +} + +cpu_usage { + format = "  %usage " +} + +wireless wlp2s0 { + format_up = "  %essid %bitrate " + format_down = " 睊" +} + + +battery all { + format = " %status %percentage " + format_down = "No battery" + last_full_capacity = true + integer_battery_capacity = true + status_chr = "" + status_bat = "" + status_unk = "" + status_full = "" + low_threshold = 20 + threshold_type = percentage +} + +volume master { + format = " 墳 %volume " + format_muted = " ﱝ " + device = "default" + mixer = "Master" + mixer_idx = 0 +} + +tztime local { + format = "  %A %d-%m-%Y " +} + +time { + format = "  %H:%M " +} diff --git a/neomutt/gpg.rc b/neomutt/gpg.rc new file mode 100644 index 0000000..ebcc37f --- /dev/null +++ b/neomutt/gpg.rc @@ -0,0 +1,14 @@ +set pgp_default_key=0xkey +set pgp_sign_as=0xkey +set crypt_use_gpgme=yes +set crypt_autosign=yes +set crypt_verify_sig=yes +set crypt_replysign=yes +set crypt_replyencrypt=yes +set crypt_replysignencrypted=yes +set crypt_autoencrypt = yes + + +set pgp_check_gpg_decrypt_status_fd +set pgp_use_gpg_agent = yes +set pgp_self_encrypt = yes diff --git a/neomutt/mailcap b/neomutt/mailcap new file mode 100644 index 0000000..0390069 --- /dev/null +++ b/neomutt/mailcap @@ -0,0 +1,10 @@ +# HTML +#text/html; w3m -I %{charset} -T text/html; copiousoutput; +text/plain; vim %s + +#PDFs +application/pdf; /usr/bin/okular %s pdf + +#Images +image/png; /usr/bin/feh %s + image/jpeg; /usr/bin/feh %s diff --git a/neomutt/neomuttrc b/neomutt/neomuttrc new file mode 100644 index 0000000..7a6ef5e --- /dev/null +++ b/neomutt/neomuttrc @@ -0,0 +1,299 @@ +# +# System configuration file for NeoMutt +# + +# Default list of header fields to weed when displaying. +# Ignore all lines by default... +ignore * + +# ... then allow these through. +unignore from: subject to cc date x-mailer x-url user-agent + +# Display the fields in this order +hdr_order date from to cc subject + +# emacs-like bindings +bind editor "\e" kill-word +bind editor "\e" kill-word + +# map delete-char to a sane value +bind editor delete-char + +# some people actually like these settings +#set pager_stop +#bind pager previous-line +#bind pager next-line + +# Specifies how to sort messages in the index menu. +set sort=threads + +# The behavior of this option on the Debian mutt package is +# not the original one because exim4, the default SMTP on Debian +# does not strip bcc headers so this can cause privacy problems; +# see man muttrc for more info +#unset write_bcc +# Postfix and qmail use Delivered-To for detecting loops +unset bounce_delivered + +set mixmaster="mixmaster-filter" + +# System-wide CA file managed by the ca-certificates package +# set ssl_ca_certificates_file="/etc/ssl/certs/ca-certificates.crt" + +# imitate the old search-body function +macro index \eb "~b " "search in message bodies" + +# simulate the old url menu +macro index,pager,attach,compose \cb "\ + set my_pipe_decode=\$pipe_decode pipe_decode\ + urlview\ + set pipe_decode=\$my_pipe_decode; unset my_pipe_decode" \ +"call urlview to extract URLs out of a message" + +# Show documentation when pressing F1 +macro generic,pager " zcat /usr/share/doc/neomutt/manual.txt.gz | sensible-pager" "show NeoMutt documentation" + +# show the incoming mailboxes list (just like "neomutt -y") and back when pressing "y" +macro index y "?" "show incoming mailboxes list" +macro pager y "?" "show incoming mailboxes list" +bind browser y exit + +# Handler for gzip compressed mailboxes +# open-hook '\.gz$' "gzip --stdout --decompress '%f' > '%t'" +# close-hook '\.gz$' "gzip --stdout '%t' > '%f'" +# append-hook '\.gz$' "gzip --stdout '%t' >> '%f'" + +# If NeoMutt is unable to determine your site's domain name correctly, you can +# set the default here. (better: fix /etc/mailname) +# +# set hostname=cs.hmc.edu + +# If your sendmail supports the -B8BITMIME flag, enable the following +# +# set use_8bitmime + +# Use mime.types to look up handlers for application/octet-stream. Can +# be undone with unmime_lookup. +mime_lookup application/octet-stream + +# Upgrade the progress counter every 250ms, good for mutt over SSH +# see http://bugs.debian.org/537746 +set time_inc=250 + +# Allow mutt to understand References, Cc and In-Reply-To as headers in mailto: +mailto_allow = cc in-reply-to references + +## +## *** DEFAULT SETTINGS FOR THE ATTACHMENTS PATCH *** +## + +## +## Please see the manual (section "attachments") for detailed +## documentation of the "attachments" command. +## +## Removing a pattern from a list removes that pattern literally. It +## does not remove any type matching the pattern. +## +## attachments +A */.* +## attachments +A image/jpeg +## unattachments +A */.* +## +## This leaves "attached" image/jpeg files on the allowed attachments +## list. It does not remove all items, as you might expect, because the +## second */.* is not a matching expression at this time. +## +## Remember: "unattachments" only undoes what "attachments" has done! +## It does not trigger any matching on actual messages. + +## Qualify any MIME part with an "attachment" disposition, EXCEPT for +## text/x-vcard and application/pgp parts. (PGP parts are already known +## to neomutt, and can be searched for with ~g, ~G, and ~k.) +## +## I've added x-pkcs7 to this, since it functions (for S/MIME) +## analogously to PGP signature attachments. S/MIME isn't supported +## in a stock neomutt build, but we can still treat it specially here. +## +attachments +A */.* +attachments -A text/x-vcard application/pgp.* +attachments -A application/x-pkcs7-.* + +## Discount all MIME parts with an "inline" disposition, unless they're +## text/plain. (Why inline a text/plain part unless it's external to the +## message flow?) +## +attachments +I text/plain + +## These two lines make NeoMutt qualify MIME containers. (So, for example, +## a message/rfc822 forward will count as an attachment.) The first +## line is unnecessary if you already have "attach-allow */.*", of +## course. These are off by default! The MIME elements contained +## within a message/* or multipart/* are still examined, even if the +## containers themselves don't qualify. +## +#attachments +A message/.* multipart/.* +#attachments +I message/.* multipart/.* + +## You probably don't really care to know about deleted attachments. +attachments -A message/external-body +attachments -I message/external-body + +## +source /usr/lib/neomutt/source-neomuttrc.d| + + +# main options +# set envelope_from +# set edit_headers # show headers when composing + set fast_reply # skip to compose when replying +# set askcc # ask for CC: + set fcc_attach # save attachments with the body + set forward_format = "Fwd: %s" # format of subject when forwarding + set forward_decode # decode when forwarding + set attribution = "On %d, %n wrote:" # format of quoting header + set reply_to # reply to Reply to: field + set reverse_name # reply as whomever it was to + set include # include message in replies + set forward_quote # include message in forwards + set text_flowed + unset sig_dashes # no dashes before sig + unset mime_forward # forward attachments as part of body + +# status bar, date format, finding stuff etc. + set status_chars = " *%A" + set status_format = "[ Folder: %f ] [%r%m messages%?n? (%n new)?%?d? (%d to delete)?%?t? (%t tagged)? ]%>─%?p?( %p postponed )?" + set date_format = "%d.%m.%Y %H:%M" + set sort = threads + set sort_aux = reverse-last-date-received + set uncollapse_jump + set sort_re + set reply_regex = "^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*" + set quote_regex = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+" + set send_charset = "utf-8:iso-8859-1:us-ascii" + set charset = "utf-8" + set arrow_cursor = "no" # Change `color indicator` depending + + # Pager View Options + set pager_index_lines = 10 # Shows 10 lines of index when pager is active + set pager_context = 3 + set pager_stop + set menu_scroll + set tilde + unset markers + + set mailcap_path = ~/.config/neomutt/mailcap + set header_cache = "~/.cache/mutt" + set message_cachedir = "~/.cache/mutt" + + #set query_command = "khard email --parsable --search-in-source-files '%s'" +set mbox_type = Maildir +set smtp_url = "https://example.com:587 " +set smtp_pass = "secret" +set folder = "" +set imap_pass = "secret" +set realname = "Akshay Pushparaj" +set spoolfile = "+INBOX" +set ssl_starttls = yes +#set ssl_force_tls = yes + +mailboxes =INBOX =Sent =Drafts =Junk =Trash +set envelope_from_address = ".in" +set use_envelope_from = yes +set record = "=Sent" +set trash = "=Trash" +set postponed = "=Drafts" +set mail_check=60 + +set editor = "vim" +set tmpdir = "/tmp/neomutt/" + +set sidebar_width = 20 +set sidebar_short_path = yes +set sidebar_next_new_wrap = yes +set mail_check_stats +set sidebar_format = "%B%?F? [%F]?%* %?N?%N/?%S" +bind index,pager \Ck sidebar-prev +bind index,pager \Cj sidebar-next +bind index,pager \Co sidebar-open +bind index,pager \Cp sidebar-prev-new +bind index,pager \Cn sidebar-next-new +bind index,pager B sidebar-toggle-visible + +#gpg +source ~/.config/neomutt/gpg.rc + +#set autocrypt = yes +#set autocrypt_dir = "~/.neomutt/autocrypt" + + + +#set crypt_use_gpgme = yes +#set crypt_protected_headers_write = yes +#set crypt_autosign = yes +#set crypt_autopgp = yes +#set crypt_autoencrypt = yes + +# Set preffered view modes + auto_view text/html text/calendar application/ics # view html automatically + alternative_order text/html text/plain text/enriched text/* + +#colors +color normal default default +color indicator brightyellow default # currently selected message. default makes bar clear, disabled arrow to save space. +color sidebar_highlight red default +color sidebar_divider brightblack black +color sidebar_flagged red black +color sidebar_new green black +color normal brightyellow default +color error red default +color tilde black default +color message cyan default +color markers red white +color attachment white default +color search brightmagenta default +color status brightyellow black +color hdrdefault brightgreen default +color quoted green default +color quoted1 blue default +color quoted2 cyan default +color quoted3 yellow default +color quoted4 red default +color quoted5 brightred default +color signature brightgreen default +color bold black default +color underline black default +color normal default default + +color body brightred default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses +color body brightblue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL +color body green default "\`[^\`]*\`" # Green text between ` and ` +color body brightblue default "^# \.*" # Headings as bold blue +color body brightcyan default "^## \.*" # Subheadings as bold cyan +color body brightgreen default "^### \.*" # Subsubheadings as bold green +color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow +color body brightcyan default "[;:][-o][)/(|]" # emoticons +color body brightcyan default "[;:][)(|]" # emoticons +color body brightcyan default "[ ][*][^*]*[*][ ]?" # more emoticon? +color body brightcyan default "[ ]?[*][^*]*[*][ ]" # more emoticon? +color body red default "(BAD signature)" +color body cyan default "(Good signature)" +color body brightblack default "^gpg: Good signature .*" +color body brightyellow default "^gpg: " +color body brightyellow red "^gpg: BAD signature from.*" +mono body bold "^gpg: Good signature" +#mohttps://neomutt.org/code/config_vars.htmlno body bold "^gpg: BAD signature from.*" +color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]" + +# Default index colors: +color index yellow default '.*' +color index_author red default '.*' +color index_number blue default +color index_subject cyan default '.*' + +# For new mail: +color index brightyellow black "~N" +color index_author brightred black "~N" +color index_subject brightcyan black "~N" + +color progress black cyan + + diff --git a/picom.conf b/picom.conf new file mode 100755 index 0000000..2d6e190 --- /dev/null +++ b/picom.conf @@ -0,0 +1,414 @@ +################################# +# Shadows # +################################# + + +# Enabled client-side shadows on windows. Note desktop windows +# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow, +# unless explicitly requested using the wintypes option. +# +# shadow = false +shadow = true; + +# The blur radius for shadows, in pixels. (defaults to 12) +# shadow-radius = 12 +shadow-radius = 7; + +# The opacity of shadows. (0.0 - 1.0, defaults to 0.75) +# shadow-opacity = .75 + +# The left offset for shadows, in pixels. (defaults to -15) +# shadow-offset-x = -15 +shadow-offset-x = -7; + +# The top offset for shadows, in pixels. (defaults to -15) +# shadow-offset-y = -15 +shadow-offset-y = -7; + +# Red color value of shadow (0.0 - 1.0, defaults to 0). +# shadow-red = 0 + +# Green color value of shadow (0.0 - 1.0, defaults to 0). +# shadow-green = 0 + +# Blue color value of shadow (0.0 - 1.0, defaults to 0). +# shadow-blue = 0 + +# Hex string color value of shadow (#000000 - #FFFFFF, defaults to #000000). This option will override options set shadow-(red/green/blue) +# shadow-color = "#000000" + +# Specify a list of conditions of windows that should have no shadow. +# +# examples: +# shadow-exclude = "n:e:Notification"; +# +# shadow-exclude = [] +shadow-exclude = [ + "name = 'Notification'", + "class_g = 'Conky'", + "class_g ?= 'Notify-osd'", + "class_g = 'Cairo-clock'", + "_GTK_FRAME_EXTENTS@:c" +]; + +# Specify a X geometry that describes the region in which shadow should not +# be painted in, such as a dock window region. Use +# shadow-exclude-reg = "x10+0+0" +# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on. +# +# shadow-exclude-reg = "" + +# Crop shadow of a window fully on a particular Xinerama screen to the screen. +# xinerama-shadow-crop = false + + +################################# +# Fading # +################################# + + +# Fade windows in/out when opening/closing and when opacity changes, +# unless no-fading-openclose is used. +# fading = false +fading = true; + +# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028) +# fade-in-step = 0.028 +fade-in-step = 0.03; + +# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03) +# fade-out-step = 0.03 +fade-out-step = 0.03; + +# The time between steps in fade step, in milliseconds. (> 0, defaults to 10) +# fade-delta = 10 + +# Specify a list of conditions of windows that should not be faded. +# fade-exclude = [] + +# Do not fade on window open/close. +# no-fading-openclose = false + +# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc. +# no-fading-destroyed-argb = false + + +################################# +# Transparency / Opacity # +################################# + + +# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0) + inactive-opacity = 0.8 +#inactive-opacity = 0.8; + +# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default) +# frame-opacity = 1.0 +frame-opacity = 0.2; + +# Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows. +# inactive-opacity-override = true +inactive-opacity-override = false; + +# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0) + active-opacity = 1.0 + +# Dim inactive windows. (0.0 - 1.0, defaults to 0.0) +# inactive-dim = 0.0 + +# Specify a list of conditions of windows that should never be considered focused. +# focus-exclude = [] +focus-exclude = [ "class_g = 'Cairo-clock'" ]; + +# Use fixed inactive dim value, instead of adjusting according to window opacity. +# inactive-dim-fixed = 1.0 + +# Specify a list of opacity rules, in the format `PERCENT:PATTERN`, +# like `50:name *= "Firefox"`. picom-trans is recommended over this. +# Note we don't make any guarantee about possible conflicts with other +# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows. +# example: +# opacity-rule = [ "80:class_g = 'URxvt'" ]; +# + opacity-rule = [ + "100:class_g = 'Dunst' && !focused " +] + + +################################# +# Corners # +################################# + +# Sets the radius of rounded window corners. When > 0, the compositor will +# round the corners of windows. Does not interact well with +# `transparent-clipping`. +corner-radius = 8 + +# Exclude conditions for rounded corners. +rounded-corners-exclude = [ + "window_type = 'dock'", + "window_type = 'desktop'" +]; + + +################################# +# Background-Blurring # +################################# + + +# Parameters for background blurring, see the *BLUR* section for more information. +# blur-method = +# blur-size = 12 +# +# blur-deviation = false +# +# blur-strength = 5 + +# Blur background of semi-transparent / ARGB windows. +# Bad in performance, with driver-dependent behavior. +# The name of the switch may change without prior notifications. +# +# blur-background = false + +# Blur background of windows when the window frame is not opaque. +# Implies: +# blur-background +# Bad in performance, with driver-dependent behavior. The name may change. +# +# blur-background-frame = false + + +# Use fixed blur strength rather than adjusting according to window opacity. +# blur-background-fixed = false + + +# Specify the blur convolution kernel, with the following format: +# example: +# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1"; +# +# blur-kern = "" +blur-kern = "3x3box"; + + +# Exclude conditions for background blur. +# blur-background-exclude = [] +blur-background-exclude = [ + "window_type = 'dock'", + "window_type = 'desktop'", + "_GTK_FRAME_EXTENTS@:c" +]; + +################################# +# General Settings # +################################# + +# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers. +# daemon = false + +# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`. +# `xrender` is the default one. +# +# backend = "glx" +backend = "xrender"; + +# Enable/disable VSync. +# vsync = false +vsync = true; + +# Enable remote control via D-Bus. See the *D-BUS API* section below for more details. +# dbus = false + +# Try to detect WM windows (a non-override-redirect window with no +# child that has 'WM_STATE') and mark them as active. +# +# mark-wmwin-focused = false +mark-wmwin-focused = true; + +# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused. +# mark-ovredir-focused = false +mark-ovredir-focused = true; + +# Try to detect windows with rounded corners and don't consider them +# shaped windows. The accuracy is not very high, unfortunately. +# +# detect-rounded-corners = false +detect-rounded-corners = true; + +# Detect '_NET_WM_OPACITY' on client windows, useful for window managers +# not passing '_NET_WM_OPACITY' of client windows to frame windows. +# +# detect-client-opacity = false +detect-client-opacity = true; + +# Specify refresh rate of the screen. If not specified or 0, picom will +# try detecting this with X RandR extension. +# +# refresh-rate = 60 +refresh-rate = 0; + +# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window, +# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy, +# provided that the WM supports it. +# +# use-ewmh-active-win = false + +# Unredirect all windows if a full-screen opaque window is detected, +# to maximize performance for full-screen windows. Known to cause flickering +# when redirecting/unredirecting windows. +# +# unredir-if-possible = false + +# Delay before unredirecting the window, in milliseconds. Defaults to 0. +# unredir-if-possible-delay = 0 + +# Conditions of windows that shouldn't be considered full-screen for unredirecting screen. +# unredir-if-possible-exclude = [] + +# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows +# in the same group focused at the same time. +# +# detect-transient = false +detect-transient = true; + +# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same +# group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if +# detect-transient is enabled, too. +# +# detect-client-leader = false +detect-client-leader = true; + +# Resize damaged region by a specific number of pixels. +# A positive value enlarges it while a negative one shrinks it. +# If the value is positive, those additional pixels will not be actually painted +# to screen, only used in blur calculation, and such. (Due to technical limitations, +# with use-damage, those pixels will still be incorrectly painted to screen.) +# Primarily used to fix the line corruption issues of blur, +# in which case you should use the blur radius value here +# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`, +# with a 5x5 one you use `--resize-damage 2`, and so on). +# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly. +# +# resize-damage = 1 + +# Specify a list of conditions of windows that should be painted with inverted color. +# Resource-hogging, and is not well tested. +# +# invert-color-include = [] + +# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer. +# Might cause incorrect opacity when rendering transparent content (but never +# practically happened) and may not work with blur-background. +# My tests show a 15% performance boost. Recommended. +# +# glx-no-stencil = false + +# GLX backend: Avoid rebinding pixmap on window damage. +# Probably could improve performance on rapid window content changes, +# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.). +# Recommended if it works. +# +# glx-no-rebind-pixmap = false + +# Disable the use of damage information. +# This cause the whole screen to be redrawn everytime, instead of the part of the screen +# has actually changed. Potentially degrades the performance, but might fix some artifacts. +# The opposing option is use-damage +# +# no-use-damage = false +use-damage = true; + +# Use X Sync fence to sync clients' draw calls, to make sure all draw +# calls are finished before picom starts drawing. Needed on nvidia-drivers +# with GLX backend for some users. +# +# xrender-sync-fence = false + +# GLX backend: Use specified GLSL fragment shader for rendering window contents. +# See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl` +# in the source tree for examples. +# +# glx-fshader-win = "" + +# Force all windows to be painted with blending. Useful if you +# have a glx-fshader-win that could turn opaque pixels transparent. +# +# force-win-blend = false + +# Do not use EWMH to detect fullscreen windows. +# Reverts to checking if a window is fullscreen based only on its size and coordinates. +# +# no-ewmh-fullscreen = false + +# Dimming bright windows so their brightness doesn't exceed this set value. +# Brightness of a window is estimated by averaging all pixels in the window, +# so this could comes with a performance hit. +# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0) +# +# max-brightness = 1.0 + +# Make transparent windows clip other windows like non-transparent windows do, +# instead of blending on top of them. +# +# transparent-clipping = false + +# Set the log level. Possible values are: +# "trace", "debug", "info", "warn", "error" +# in increasing level of importance. Case doesn't matter. +# If using the "TRACE" log level, it's better to log into a file +# using *--log-file*, since it can generate a huge stream of logs. +# +# log-level = "debug" +log-level = "warn"; + +# Set the log file. +# If *--log-file* is never specified, logs will be written to stderr. +# Otherwise, logs will to written to the given file, though some of the early +# logs might still be written to the stderr. +# When setting this option from the config file, it is recommended to use an absolute path. +# +# log-file = "/path/to/your/log/file" + +# Show all X errors (for debugging) +# show-all-xerrors = false + +# Write process ID to a file. +# write-pid-path = "/path/to/your/log/file" + +# Window type settings +# +# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard: +# "unknown", "desktop", "dock", "toolbar", "menu", "utility", +# "splash", "dialog", "normal", "dropdown_menu", "popup_menu", +# "tooltip", "notification", "combo", and "dnd". +# +# Following per window-type options are available: :: +# +# fade, shadow::: +# Controls window-type-specific shadow and fade settings. +# +# opacity::: +# Controls default opacity of the window type. +# +# focus::: +# Controls whether the window of this type is to be always considered focused. +# (By default, all window types except "normal" and "dialog" has this on.) +# +# full-shadow::: +# Controls whether shadow is drawn under the parts of the window that you +# normally won't be able to see. Useful when the window has parts of it +# transparent, and you want shadows in those areas. +# +# redir-ignore::: +# Controls whether this type of windows should cause screen to become +# redirected again after been unredirected. If you have unredir-if-possible +# set, and doesn't want certain window to cause unnecessary screen redirection, +# you can set this to `true`. +# +wintypes: +{ + tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; }; + dock = { shadow = false; } + dnd = { shadow = false; } + popup_menu = { opacity = 0.8; } + dropdown_menu = { opacity = 0.8; } +}; diff --git a/polybar/config b/polybar/config new file mode 100644 index 0000000..13629ed --- /dev/null +++ b/polybar/config @@ -0,0 +1,244 @@ + +[colors] +color0 = #0a0b08 +color1 = #675638 +color2 = #555B47 +color3 = #5A6651 +color4 = #6E6754 +color5 = #656D56 +color6 = #936D51 +color7 = #ccc0ac +color8 = #8e8678 +color9 = #675638 +color10 = #555B47 +color11 = #5A6651 +color12 = #6E6754 +color13 = #656D56 +color14 = #936D51 +color15 = #ccc0ac +background = #000000 +;background = #0c0f10 +background-alt = #ffb25a +foreground = #dfdfdf +foreground-alt = #bbb +;foreground-alt = #222 +;primary = #ffb52a +;primary = #666666 +primary = #abbcc8 +secondary = #e60053 +alert = #bd2c40 + +[bar/bar] +;monitor = ${env:MONITOR:HDMI-1} +width = 100% +height = 22 +;offset-x = 1% +;offset-y = 1% +radius = 0.0 +fixed-center = false +bottom = true + +background = ${colors.color0} +foreground = ${colors.color15} + +border-size = 1 +border-color = #00000000 + +padding-left = 0 +padding-right = 0 + + +font-0 = terminessTTF Nerd Font Mono:size=12;3 +font-1 = DejavuSansMono NF:style=Book:size=13;3 + +modules-left = i3 +modules-center = media +modules-right = wlp2s0 pulseaudio battery cpu date time + +tray-position = right +tray-padding = 1 +tray-background = ${colors.color1} + +;wm-restack = bspwm +wm-restack = i3 + +;override-redirect = true + +;scroll-up = bspwm-desknext +;scroll-down = bspwm-deskprev + +;scroll-up = i3wm-wsnext +;scroll-down = i3wm-wsprev + +cursor-click = pointer +cursor-scroll = ns-resize + +[module/i3] +type = internal/i3 +format = +index-sort = true +wrapping-scroll = false + +label-mode = %mode% + +; Only show workspaces on the same output as the bar +;pin-workspaces = true + +label-mode-padding = 1 +label-mode-foreground = ${colors.colors1} +label-mode-background = ${colors.colors0} + +; focused = Active workspace on focused monitor +label-focused = %icon% +label-focused-foreground = ${colors.color0} +label-focused-background = ${colors.color1} +label-focused-padding = 1 + +; unfocused = Inactive workspace on any monitor +label-unfocused = %index% +label-unfocused-padding = 1 + +; visible = Active workspace on unfocused monitor +label-visible = %index% +label-visible-background = ${self.label-focused-background} +label-visible-padding = ${self.label-focused-padding} + +; urgent = Workspace with urgency hint set +label-urgent = %icon%:%index% +label-urgent-background = ${colors.alert} +label-urgent-padding = 1 + +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-9 = 10; + +[module/media] +type = custom/script +exec = ~/.config/polybar/scripts/music +interval = 1 +tail = true +label = " %output% " +label-foreground = ${colors.color0} +label-background = ${colors.color3} + +[module/wlp2s0] +type = internal/network +interface = wlp2s0 +interval = 3.0 +label-connected-background = ${colors.color5} +format-connected = +label-connected = " %signal%% %essid% %downspeed% " +label-connected-foreground = ${colors.color0} +format-disconnected = +;label-disconnected = " 睊 " + +[module/eth] +type = internal/network +interface = eno0 +interval = 3.0 + +format-connected-underline = #55aa55 +format-connected-prefix = " " +format-connected-prefix-foreground = ${colors.color0} +label-connected = %essid% +format-disconnected = + +[module/pulseaudio] +type = internal/pulseaudio + +ramp-volume-background = ${colors.color7} +ramp-volume-foreground = ${colors.color0} +label-volume-background = ${colors.color7} +label-volume-foreground = ${colors.color0} + +format-volume = +label-volume = "%percentage% " + +label-muted = 🔇 muted +label-muted-foreground = #666 +ramp-volume-0 = "  " + +[module/battery] +type = internal/battery +battery = BAT0 +adapter = AC +full-at = 98 +label-charging = "%percentage% " +label-discharging = "%percentage% " +label-full = "%percentage_raw% " +format-charging = "" +format-discharging = "" +format-full-prefix = "  " +format-full-prefix-foreground = ${colors.color0} +format-full-prefix-background= ${colors.color9} +label-full-background = ${colors.color9} +label-full-foreground = ${colors.color0} +label-charging-background = ${colors.color9} +label-charging-foreground = ${colors.color0} + +label-discharging-background = ${colors.color9} +label-discharging-foreground = ${colors.color0} +ramp-capacity-0 ="  " +ramp-capacity-1 ="  " +ramp-capacity-2 ="  " +ramp-capacity-3 ="  " +ramp-capacity-4 ="  " +ramp-capacity-5 ="  " +ramp-capacity-6 ="  " +ramp-capacity-7 ="  " +ramp-capacity-8 ="  " +ramp-capacity-9 ="  " + +ramp-capacity-foreground = ${colors.color0} +ramp-capacity-background = ${colors.color9} +animation-charging-0 ="  " +animation-charging-foreground = ${colors.color0} +animation-charging-background = ${colors.color9} + +[module/cpu] +type = internal/cpu +interval = 2 +padding = 2 +format-prefix = "  " +format-background = ${colors.color11} +format-prefix-foreground = ${colors.color0} +label-background = ${colors.color11} +label-foreground = ${colors.color0} +label = "%percentage% " + +[module/date] +type=internal/date +date = " %d-%m-%Y " +label = %date% +label-background =${colors.color13} +label-foreground = ${colors.color0} + +[module/time] +type = internal/date +interval = 5 +time = " %H:%M " +time-alt = %H:%M:%S +label = %time% +label-background = ${colors.color14} +label-foreground = ${colors.color0} + +[settings] +screenchange-reload = true +;compositing-background = xor +;compositing-background = screen +;compositing-foreground = source +;compositing-border = over +;pseudo-transparency = false + +[global/wm] +margin-top = 1 +margin-bottom = 1 + + diff --git a/polybar/scripts/.cmus.swp b/polybar/scripts/.cmus.swp new file mode 100644 index 0000000..f2d1a54 Binary files /dev/null and b/polybar/scripts/.cmus.swp differ diff --git a/polybar/scripts/cmus b/polybar/scripts/cmus new file mode 100755 index 0000000..f617240 --- /dev/null +++ b/polybar/scripts/cmus @@ -0,0 +1,16 @@ +#!/bin/bash + +duration=$(cmus-remote -Q 2> /dev/null | grep duration | cut -d ' ' -f2-) +position=$(cmus-remote -Q 2> /dev/null | grep position | cut -d ' ' -f2-) +stat=$(cmus-remote -Q 2> /dev/null | grep status | cut -d ' ' -f2-) +artist=$(cmus-remote -Q 2> /dev/null | grep ' artist ' | cut -d ' ' -f3-) +song=$(cmus-remote -Q 2> /dev/null | grep title | cut -d ' ' -f3-) +if [ "$stat" != "" -a "$artist" != "" ]; then + cur=$(date -d@"$position" -u +%M:%S) + dur=$(date -d@"$duration" -u +%M:%S) + if [ "$stat" = "playing" ]; then + echo "$artist - $song || $cur" + else + echo "$song - $cur - paused" + fi +fi diff --git a/polybar/scripts/launch.sh b/polybar/scripts/launch.sh new file mode 100755 index 0000000..5baf50d --- /dev/null +++ b/polybar/scripts/launch.sh @@ -0,0 +1,4 @@ +#! /usr/bin/env bash +killall -q polybar +echo "---" | tee -a /tmp/polybar1.log /tmp/polybar2.log +polybar bar 2>&1 | tee -a /tmp/polybar.log & disown diff --git a/polybar/scripts/music b/polybar/scripts/music new file mode 100755 index 0000000..ad746b5 --- /dev/null +++ b/polybar/scripts/music @@ -0,0 +1,32 @@ +#!/bin/bash + +# install playerctl + +none="No players found" +down=$(playerctl status 2>&1) +if [ "$down" = "$none" -o "$down" = "Stopped" ]; then + echo "" + exit +else + tracklength=$(playerctl metadata mpris:length 2>&1| sed 's/.\{6\}$//') + current=$(playerctl position 2>&1 | sed 's/.\{7\}$//') + if [ "$tracklength" -ge 3600 ]; then + duration=$(date -d@"$tracklength" -u +%H:%M:%S 2>&1) + else + duration=$(date -d@"$tracklength" -u +%M:%S 2>&1) + fi + if [ "$current" -ge 3600 ]; then + position=$(date -d@"$current" -u +%H:%M:%S 2>&1) + else + position=$(date -d@"$current" -u +%M:%S 2>&1) + fi + artist=$(playerctl metadata xesam:artist 2>&1) + song=$(playerctl metadata xesam:title 2>&1) + if [ "$down" = "Playing" ]; then + echo "$song | $position" + elif [ "$down" = "Paused" ]; then + echo "$song | $position | $duration | paused" + else + exit + fi +fi diff --git a/redshift.conf b/redshift.conf new file mode 100644 index 0000000..64b0894 --- /dev/null +++ b/redshift.conf @@ -0,0 +1,7 @@ +[redshift] +adjustment-method=randr +location-provider=manual + +[manual] +lat=11.25 +lon=75.78 diff --git a/rtorrent/rtorrentrc b/rtorrent/rtorrentrc new file mode 100644 index 0000000..8edc506 --- /dev/null +++ b/rtorrent/rtorrentrc @@ -0,0 +1,145 @@ +############################################################################# +# A minimal rTorrent configuration that provides the basic features +# you want to have in addition to the built-in defaults. +# +# See https://github.com/rakshasa/rtorrent/wiki/CONFIG-Template +# for an up-to-date version. +############################################################################# + + +## Instance layout (base paths) +method.insert = cfg.basedir, private|const|string, (cat,"/home/akshay/Downloads/rtorrent/") +method.insert = cfg.download, private|const|string, (cat,(cfg.basedir),"download/") +method.insert = cfg.logs, private|const|string, (cat,(cfg.basedir),"log/") +method.insert = cfg.logfile, private|const|string, (cat,(cfg.logs),"rtorrent-",(system.time),".log") +method.insert = cfg.session, private|const|string, (cat,(cfg.basedir),".session/") +method.insert = cfg.watch, private|const|string, (cat,(cfg.basedir),"watch/") + + +## Create instance directories +execute.throw = sh, -c, (cat,\ + "mkdir -p \"",(cfg.download),"\" ",\ + "\"",(cfg.logs),"\" ",\ + "\"",(cfg.session),"\" ",\ + "\"",(cfg.watch),"/load\" ",\ + "\"",(cfg.watch),"/start\" ") + + +## Listening port for incoming peer traffic (fixed; you can also randomize it) +network.port_range.set = 50000-50000 +network.port_random.set = no + + +## Tracker-less torrent and UDP tracker support +## (conservative settings for 'private' trackers, change for 'public') +dht.mode.set = disable +protocol.pex.set = no + +trackers.use_udp.set = no + + +## Peer settings +throttle.max_downloads.global.set = 100 +throttle.max_uploads.global.set = 60 +throttle.max_downloads.set = 50 +throttle.max_uploads.set = 50 +throttle.global_down.max_rate.set_kb = 0 +throttle.global_up.max_rate.set_kb = 0 + +throttle.min_peers.normal.set = 1 +throttle.max_peers.normal.set = 400 +throttle.min_peers.seed.set = -1 +throttle.max_peers.seed.set = -1 +trackers.numwant.set = 80 + +protocol.encryption.set = allow_incoming,try_outgoing,enable_retry + + +## Limits for file handle resources, this is optimized for +## an `ulimit` of 1024 (a common default). You MUST leave +## a ceiling of handles reserved for rTorrent's internal needs! +network.http.max_open.set = 50 +network.max_open_files.set = 600 +network.max_open_sockets.set = 300 + + +## Memory resource usage (increase if you have a large number of items loaded, +## and/or the available resources to spend) +pieces.memory.max.set = 1800M +network.xmlrpc.size_limit.set = 4M + + +## Basic operational settings (no need to change these) +session.path.set = (cat, (cfg.session)) +directory.default.set = (cat, (cfg.download)) +log.execute = (cat, (cfg.logs), "execute.log") +#log.xmlrpc = (cat, (cfg.logs), "xmlrpc.log") +execute.nothrow = sh, -c, (cat, "echo >",\ + (session.path), "rtorrent.pid", " ",(system.pid)) + + +## Other operational settings (check & adapt) +encoding.add = utf8 +system.umask.set = 0027 +system.cwd.set = (directory.default) +network.http.dns_cache_timeout.set = 25 +schedule2 = monitor_diskspace, 15, 60, ((close_low_diskspace, 1000M)) +#pieces.hash.on_completion.set = no +#view.sort_current = seeding, greater=d.ratio= +#keys.layout.set = qwerty +#network.http.capath.set = "/etc/ssl/certs" +#network.http.ssl_verify_peer.set = 0 +#network.http.ssl_verify_host.set = 0 + + +## Some additional values and commands +method.insert = system.startup_time, value|const, (system.time) +method.insert = d.data_path, simple,\ + "if=(d.is_multi_file),\ + (cat, (d.directory), /),\ + (cat, (d.directory), /, (d.name))" +method.insert = d.session_file, simple, "cat=(session.path), (d.hash), .torrent" + + +## Watch directories (add more as you like, but use unique schedule names) +## Add torrent +schedule2 = watch_load, 11, 10, ((load.verbose, (cat, (cfg.watch), "load/*.torrent"))) +## Add & download straight away +schedule2 = watch_start, 10, 10, ((load.start_verbose, (cat, (cfg.watch), "start/*.torrent"))) + + +## Run the rTorrent process as a daemon in the background +## (and control via XMLRPC sockets) +#system.daemon.set = true +#network.scgi.open_local = (cat,(session.path),rpc.socket) +#execute.nothrow = chmod,770,(cat,(session.path),rpc.socket) + + +## Logging: +## Levels = critical error warn notice info debug +## Groups = connection_* dht_* peer_* rpc_* storage_* thread_* tracker_* torrent_* +print = (cat, "Logging to ", (cfg.logfile)) +log.open_file = "log", (cfg.logfile) +log.add_output = "info", "log" +#log.add_output = "tracker_debug", "log" + + + +# Create symlinks in the watch directory with a suffix indicating the download state. +method.set_key = event.download.resumed,link1,"d.create_link=tied,,.started" +method.set_key = event.download.paused,link1,"d.delete_link=tied,,.started" +method.set_key = event.download.finished,"d.create_link=tied,,.finished" +method.set_key = event.download.erased,"d.delete_link=tied,,.finished" + +# Create symlinks in the same directory as the download. +method.set_key = event.download.resumed,link2,"d.create_link=base_path,,.started" +method.set_key = event.download.paused,link2,"d.delete_link=base_path,,.started" +method.set_key = event.download.finished,link2,"d.create_link=base_path,,.finished" +method.set_key = event.download.erased,link2,"d.delete_link=base_path,,.finished" + +# Create a symlink in another directory without a suffix. +# You need to quote the command in this case. +method.set_key = event.download.finished,link3,"d.create_link=base_filename,/files," + + +### END of rtorrent.rc ### diff --git a/screenshot/cmus.png b/screenshot/cmus.png new file mode 100644 index 0000000..78d4426 Binary files /dev/null and b/screenshot/cmus.png differ diff --git a/screenshot/colorscheme.gif b/screenshot/colorscheme.gif new file mode 100644 index 0000000..67b5819 Binary files /dev/null and b/screenshot/colorscheme.gif differ diff --git a/screenshot/image.png b/screenshot/image.png new file mode 100644 index 0000000..07a5acc Binary files /dev/null and b/screenshot/image.png differ diff --git a/screenshot/lap.png b/screenshot/lap.png new file mode 100644 index 0000000..6b3ec84 Binary files /dev/null and b/screenshot/lap.png differ diff --git a/screenshot/lock.png b/screenshot/lock.png new file mode 100644 index 0000000..abb55b1 Binary files /dev/null and b/screenshot/lock.png differ diff --git a/systemd/lidlock.service b/systemd/lidlock.service new file mode 100755 index 0000000..8926f7a --- /dev/null +++ b/systemd/lidlock.service @@ -0,0 +1,13 @@ +# add this to /etc/systemd/system and enable service +[Unit] +Description=i3lock on suspend +After=sleep.target + +[Service] +User=akshay +Type=forking +Environment=DISPLAY=:0 +ExecStart=/home/akshay/.config/i3/lock/lock.sh + +[Install] +WantedBy=sleep.target diff --git a/touchpad_toggle.sh b/touchpad_toggle.sh new file mode 100644 index 0000000..a79b1f1 --- /dev/null +++ b/touchpad_toggle.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +declare -i ID +ID=`xinput list | grep -Eio '(touchpad|glidepoint)\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}'` +declare -i STATE +STATE=`xinput list-props $ID|grep 'Device Enabled'|awk '{print $4}'` +if [ $STATE -eq 1 ] +then + xinput disable $ID + # echo "Touchpad disabled." + # notify-send -a 'Touchpad' 'Disabled' -i /usr/share/icons/Adwaita/48x48/devices/input-touchpad.png + else + xinput enable $ID + # echo "Touchpad enabled." + # notify-send -a 'Touchpad' 'Enabled' -i /usr/share/icons/Adwaita/48x48/devices/input-touchpad.png +fi diff --git a/vimrc b/vimrc new file mode 100644 index 0000000..3dbd53a --- /dev/null +++ b/vimrc @@ -0,0 +1,40 @@ +call plug#begin() +Plug 'ayu-theme/ayu-vim' +Plug 'scrooloose/nerdtree' +Plug 'ryanoasis/vim-devicons' +Plug 'tmsvg/pear-tree' +Plug 'makerj/vim-pdf' +Plug 'junegunn/goyo.vim' +Plug 'rust-lang/rust.vim' +Plug 'sainnhe/gruvbox-material' +call plug#end() + +"merdtree +autocmd StdinReadPre * let s:std_in=1 +autocmd VimEnter * if argc() == 0 && !exists('s:std_in') | NERDTree | endif + +"colorscheme +set background=dark +colorscheme gruvbox-material + +set tabstop=2 +set number +"borders and tilde +highlight NonText ctermfg='Black' +set enc=utf-8 +set fillchars= + +"key remap +map :NERDTreeToggle +map l +map h +map j +map k +autocmd! bufwritepost *.h make && sudo make install + +"auto source +autocmd! bufwritepost .vimrc source % + +"rust syntax +syntax enable +filetype plugin indent on diff --git a/wallpaper/README.md b/wallpaper/README.md new file mode 100644 index 0000000..a7e8db0 --- /dev/null +++ b/wallpaper/README.md @@ -0,0 +1 @@ +Wallpapers from [Wallhaven](https://wallhaven.cc) diff --git a/wallpaper/city.jpg b/wallpaper/city.jpg new file mode 100644 index 0000000..b0a875a Binary files /dev/null and b/wallpaper/city.jpg differ diff --git a/wallpaper/com2.png b/wallpaper/com2.png new file mode 100644 index 0000000..09ad5d5 Binary files /dev/null and b/wallpaper/com2.png differ diff --git a/wallpaper/comedian.jpg b/wallpaper/comedian.jpg new file mode 100644 index 0000000..cabe846 Binary files /dev/null and b/wallpaper/comedian.jpg differ diff --git a/wallpaper/d1.png b/wallpaper/d1.png new file mode 100755 index 0000000..bd66b4f Binary files /dev/null and b/wallpaper/d1.png differ diff --git a/wallpaper/dune.jpg b/wallpaper/dune.jpg new file mode 100644 index 0000000..3d8d501 Binary files /dev/null and b/wallpaper/dune.jpg differ diff --git a/wallpaper/leaves.png b/wallpaper/leaves.png new file mode 100644 index 0000000..2632fee Binary files /dev/null and b/wallpaper/leaves.png differ diff --git a/wallpaper/neon.jpg b/wallpaper/neon.jpg new file mode 100644 index 0000000..e7593d0 Binary files /dev/null and b/wallpaper/neon.jpg differ diff --git a/wallpaper/rhone.jpg b/wallpaper/rhone.jpg new file mode 100644 index 0000000..cd8bf16 Binary files /dev/null and b/wallpaper/rhone.jpg differ diff --git a/wallpaper/sa-flowers.jpeg b/wallpaper/sa-flowers.jpeg new file mode 100644 index 0000000..def6ccb Binary files /dev/null and b/wallpaper/sa-flowers.jpeg differ diff --git a/wallpaper/sa-train.jpeg b/wallpaper/sa-train.jpeg new file mode 100644 index 0000000..34c2785 Binary files /dev/null and b/wallpaper/sa-train.jpeg differ diff --git a/wallpaper/sa.jpeg b/wallpaper/sa.jpeg new file mode 100644 index 0000000..80fb6cc Binary files /dev/null and b/wallpaper/sa.jpeg differ diff --git a/wallpaper/samurai-think.jpg b/wallpaper/samurai-think.jpg new file mode 100644 index 0000000..d1591f5 Binary files /dev/null and b/wallpaper/samurai-think.jpg differ diff --git a/wallpaper/samurai.jpg b/wallpaper/samurai.jpg new file mode 100644 index 0000000..fff9dcd Binary files /dev/null and b/wallpaper/samurai.jpg differ diff --git a/wallpaper/sea.jpg b/wallpaper/sea.jpg new file mode 100644 index 0000000..74f5ed9 Binary files /dev/null and b/wallpaper/sea.jpg differ diff --git a/wallpaper/space.jpg b/wallpaper/space.jpg new file mode 100644 index 0000000..f8d3353 Binary files /dev/null and b/wallpaper/space.jpg differ diff --git a/wallpaper/starry.jpg b/wallpaper/starry.jpg new file mode 100644 index 0000000..c249e2c Binary files /dev/null and b/wallpaper/starry.jpg differ diff --git a/wallpaper/the-starry-night-over-the-rhone.jpg b/wallpaper/the-starry-night-over-the-rhone.jpg new file mode 100644 index 0000000..bd247c3 Binary files /dev/null and b/wallpaper/the-starry-night-over-the-rhone.jpg differ diff --git a/zsh/zimrc b/zsh/zimrc new file mode 100644 index 0000000..e695306 --- /dev/null +++ b/zsh/zimrc @@ -0,0 +1,40 @@ +# Start configuration added by Zim install {{{ +# ------- +# Modules +# ------- + +# Sets sane Zsh built-in environment options. +zmodule environment +# Provides handy git aliases and functions. +zmodule git +# Applies correct bindkeys for input events. +zmodule input +# Sets a custom terminal title. +zmodule termtitle +# Utility aliases and functions. Adds colour to ls, grep and less. +zmodule utility + +# +# Prompt +# +# +zmodule gitster +# Exposes git repository status information to prompts. +zmodule git-info +# A customizable version of steeef's prompt theme. + +# Additional completion definitions for Zsh. +zmodule zsh-users/zsh-completions +# Enables and configures smart and extensive tab completion. +# completion must be sourced after zsh-users/zsh-completions +zmodule completion +# Fish-like autosuggestions for Zsh. +zmodule zsh-users/zsh-autosuggestions +# Fish-like syntax highlighting for Zsh. +# zsh-users/zsh-syntax-highlighting must be sourced after completion +zmodule zsh-users/zsh-syntax-highlighting +# Fish-like history search (up arrow) for Zsh. +# zsh-users/zsh-history-substring-search must be sourced after zsh-users/zsh-syntax-highlighting +zmodule zsh-users/zsh-history-substring-search +# }}} End configuration added by Zim install + diff --git a/zsh/zshrc b/zsh/zshrc new file mode 100644 index 0000000..bd441e7 --- /dev/null +++ b/zsh/zshrc @@ -0,0 +1,186 @@ +# Start configuration added by Zim install {{{ +# +# User configuration sourced by interactive shells +# + +# ----------------- +# Zsh configuration +# ----------------- + +# +# History +# + +# Remove older command from the history if a duplicate is to be added. +setopt HIST_IGNORE_ALL_DUPS + +# +# Input/output +# + +# Set editor default keymap to emacs (`-e`) or vi (`-v`) +bindkey -e + +# Prompt for spelling correction of commands. +#setopt CORRECT + +# Customize spelling correction prompt. +#SPROMPT='zsh: correct %F{red}%R%f to %F{green}%r%f [nyae]? ' + +# Remove path separator from WORDCHARS. +WORDCHARS=${WORDCHARS//[\/]} + + +# -------------------- +# Module configuration +# -------------------- + +# +# completion +# + +# Set a custom path for the completion dump file. +# If none is provided, the default ${ZDOTDIR:-${HOME}}/.zcompdump is used. +#zstyle ':zim:completion' dumpfile "${ZDOTDIR:-${HOME}}/.zcompdump-${ZSH_VERSION}" + +# +# git +# + +# Set a custom prefix for the generated aliases. The default prefix is 'G'. +#zstyle ':zim:git' aliases-prefix 'g' + +# +# input +# + +# Append `../` to your input for each `.` you type after an initial `..` +#zstyle ':zim:input' double-dot-expand yes + +# +# termtitle +# + +# Set a custom terminal title format using prompt expansion escape sequences. +# See http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Simple-Prompt-Escapes +# If none is provided, the default '%n@%m: %~' is used. +#zstyle ':zim:termtitle' format '%1~' + +# +# zsh-autosuggestions +# + +# Customize the style that the suggestions are shown with. +# See https://github.com/zsh-users/zsh-autosuggestions/blob/master/README.md#suggestion-highlight-style +#ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=10' + +# +# zsh-syntax-highlighting +# + +# Set what highlighters will be used. +# See https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/docs/highlighters.md +ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets) + +# Customize the main highlighter styles. +# See https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/docs/highlighters/main.md#how-to-tweak-it +#typeset -A ZSH_HIGHLIGHT_STYLES +#ZSH_HIGHLIGHT_STYLES[comment]='fg=10' + +# ------------------ +# Initialize modules +# ------------------ + +if [[ ! ${ZIM_HOME}/init.zsh -nt ${ZDOTDIR:-${HOME}}/.zimrc ]]; then + # Update static initialization script if it does not exist or it's outdated, before sourcing it + source ${ZIM_HOME}/zimfw.zsh init -q +fi +source ${ZIM_HOME}/init.zsh + +# ------------------------------ +# Post-init module configuration +# ------------------------------ + +# +# zsh-history-substring-search +# + +# Bind ^[[A/^[[B manually so up/down works both before and after zle-line-init +bindkey '^[[A' history-substring-search-up +bindkey '^[[B' history-substring-search-down + +# Bind up and down keys +zmodload -F zsh/terminfo +p:terminfo +if [[ -n ${terminfo[kcuu1]} && -n ${terminfo[kcud1]} ]]; then + bindkey ${terminfo[kcuu1]} history-substring-search-up + bindkey ${terminfo[kcud1]} history-substring-search-down +fi + +bindkey '^P' history-substring-search-up +bindkey '^N' history-substring-search-down +bindkey -M vicmd 'k' history-substring-search-up +bindkey -M vicmd 'j' history-substring-search-down +# }}} End configuration added by Zim install + +# Set name of the theme to load --- if set to "random", it will +# load a random theme each time oh-my-zsh is loaded, in which case, +# to know which specific one was loaded, run: echo $RANDOM_THEME +# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes +#ZSH_THEME="robbyrussell" + +# Which plugins would you like to load? +# Standard plugins can be found in $ZSH/plugins/ +# Custom plugins may be added to $ZSH_CUSTOM/plugins/ +# Example format: plugins=(rails git textmate ruby lighthouse) +# Add wisely, as too many plugins slow down shell startup. + +export LANG=en_US.UTF-8 +export EDITOR='vim' +export FZF_BASE="/usr/bin/fzf" + +alias vi="vim" +alias freq="watch grep \"cpu MHz\" /proc/cpuinfo" +alias c="clear" +alias cpu_p="~/.config/i3/cpu_percentage.sh" +alias screen="screen -U" + +#(cat ~/.cache/wal/sequences &) +#cat ~/.cache/wal/sequences +#source ~/.cache/wal/colors-tty.sh + +#source ~/git/zsh-autocomplete/zsh-autocomplete.plugin.zsh + +#nnn cofig +TERMINAL="alacritty" +BLK="0B" CHR="0B" DIR="04" EXE="06" REG="00" HARDLINK="06" SYMLINK="06" MISSING="00" ORPHAN="09" FIFO="06" SOCK="0B" OTHER="06" +#export NNN_COLORS='1234' +export NNN_FCOLORS="$BLK$CHR$DIR$EXE$REG$HARDLINK$SYMLINK$MISSING$ORPHAN$FIFO$SOCK$OTHER" +export NNN_PLUG='p:preview-tui;i:imgthumb;m:nmount;k:kdeconnect;g:gpg*;t:mtpmount' +export NNN_TRASH=1 +export NNN_FIFO=/tmp/nnn.fifo nnn +source /usr/share/doc/fzf/examples/key-bindings.zsh + +export GEM_HOME="$HOME/.gems" +export PATH="$HOME/.gems/bin:/usr/sbin:$PATH" + +#(cat ~/.cache/wal/sequences &) + +# Alternative (blocks terminal for 0-3ms) +#cat ~/.cache/wal/sequences + +# To add support for TTYs this line can be optionally added. +#source ~/.cache/wal/colors-tty.sh + +ffs() { + firefox --search $1 +} + +lks() { + search="${1}" + links "https://duckduckgo.com/?q=$search" +} + + +if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then + exec startx +fi