diff options
| author | NPScript <nathan@reinerweb.ch> | 2022-04-09 21:22:20 +0200 |
|---|---|---|
| committer | NPScript <nathan@reinerweb.ch> | 2022-04-09 21:22:20 +0200 |
| commit | 896c311feb10e947c727a888308dbc7eb71d1ec2 (patch) | |
| tree | b6713478d14eb8ea531107c3f399c437db7fd2fb /.config | |
init commit
Diffstat (limited to '.config')
| -rw-r--r-- | .config/dunst/dunstrc | 413 | ||||
| -rw-r--r-- | .config/mimeapps.list | 222 | ||||
| -rw-r--r-- | .config/mutt/muttrc | 31 | ||||
| -rw-r--r-- | .config/nvim/.netrwhist | 12 | ||||
| -rw-r--r-- | .config/nvim/README.md | 3 | ||||
| -rw-r--r-- | .config/nvim/init.lua | 10 | ||||
| -rw-r--r-- | .config/nvim/lua/keymap.lua | 55 | ||||
| -rw-r--r-- | .config/nvim/lua/lsp.lua | 46 | ||||
| -rw-r--r-- | .config/nvim/lua/plug.lua | 22 | ||||
| -rw-r--r-- | .config/nvim/lua/settings.lua | 45 | ||||
| -rw-r--r-- | .config/qutebrowser/autoconfig.yml | 138 | ||||
| -rw-r--r-- | .config/sc-im/scimrc | 10 | ||||
| -rw-r--r-- | .config/sway/config | 287 | ||||
| -rw-r--r-- | .config/waybar/config | 160 | ||||
| -rw-r--r-- | .config/waybar/style.css | 127 | ||||
| -rw-r--r-- | .config/zsh/.zshrc | 45 | ||||
| -rw-r--r-- | .config/zsh/knight | 17 |
17 files changed, 1643 insertions, 0 deletions
diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc new file mode 100644 index 0000000..5f0b827 --- /dev/null +++ b/.config/dunst/dunstrc @@ -0,0 +1,413 @@ +[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 = "300x5-15+42" + + # 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 = 0 + + # Draw a line of "separator_height" pixel height between two + # notifications. + # Set to 0 to disable. + separator_height = 1 + + # 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 = 1 + + # Defines color of the frame around the notification window. + frame_color = "#547f62"" + + # Define a color for the separator. + # possible values are: + # * auto: dunst tries to find a color fitting to the background; + # * foreground: use the same color as the foreground; + # * frame: use the same color as the frame; + # * anything else will be interpreted as a X color. + separator_color = frame + + # Sort messages by urgency. + sort = yes + + # Don't remove messages, if the user is idle (no mouse or keyboard input) + # for longer than idle_threshold seconds. + # Set to 0 to disable. + # A client can set the 'transient' hint to bypass this. See the rules + # section for how to disable this if necessary + idle_threshold = 120 + + ### Text ### + + font = SauceCodePro Nerd Font 10 + + # The spacing between lines. If the height is smaller than the + # font height, it will get raised to the font height. + line_height = 0 + + # Possible values are: + # full: Allow a small subset of html markup in notifications: + # <b>bold</b> + # <i>italic</i> + # <s>strikethrough</s> + # <u>underline</u> + # + # For a complete reference see + # <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>. + # + # strip: This setting is provided for compatibility with some broken + # clients that send markup even though it's not enabled on the + # server. Dunst will try to strip the markup but the parsing is + # simplistic so using this option outside of matching rules for + # specific applications *IS GREATLY DISCOURAGED*. + # + # no: Disable markup parsing, incoming notifications will be treated as + # plain text. Dunst will not advertise that it has the body-markup + # capability if this is set as a global setting. + # + # It's important to note that markup inside the format option will be parsed + # regardless of what this is set to. + markup = full + + # The format of the message. Possible variables are: + # %a appname + # %s summary + # %b body + # %i iconname (including its path) + # %I iconname (without its path) + # %p progress value if set ([ 0%] to [100%]) or nothing + # %n progress value if set without any extra characters + # %% Literal % + # Markup is allowed + format = "<b>%s</b>\n%b" + + # Alignment of message text. + # Possible values are "left", "center" and "right". + alignment = left + + # 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 make an ellipsis in long lines. + # Possible values are "start", "middle" and "end". + ellipsize = middle + + # Ignore newlines '\n' in notifications. + ignore_newline = no + + # Stack together notifications with the same content + stack_duplicates = true + + # Hide the count of stacked notifications with the same content + hide_duplicate_count = false + + # Display indicators for URLs (U) and actions (A). + show_indicators = yes + + ### Icons ### + + # Align icons left/right/off + icon_position = off + + # 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/brave -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 + + # Manage dunst's desire for talking + # Can be one of the following values: + # crit: Critical features. Dunst aborts + # warn: Only non-fatal warnings + # mesg: Important Messages + # info: all unimportant stuff + # debug: all less than unimportant stuff + verbosity = mesg + + # Define the corner radius of the notification window + # in pixel size. If the radius is 0, you have no rounded + # corners. + # The radius will be automatically lowered if it exceeds half of the + # notification height to avoid clipping text and/or icons. + corner_radius = 0 + + ### Legacy + + # Use the Xinerama extension instead of RandR for multi-monitor support. + # This setting is provided for compatibility with older nVidia drivers that + # do not support RandR and using it on systems that support RandR is highly + # discouraged. + # + # By enabling this setting dunst will not be able to detect when a monitor + # is connected or disconnected which might break follow mode if the screen + # layout changes. + force_xinerama = false + + ### mouse + + # Defines action of mouse event + # Possible values are: + # * none: Don't do anything. + # * do_action: If the notification has exactly one action, or one is marked as default, + # invoke it. If there are multiple and no default, open the context menu. + # * close_current: Close current notification. + # * close_all: Close all notifications. + mouse_left_click = close_current + mouse_middle_click = do_action + mouse_right_click = close_all + +# Experimental features that may or may not work correctly. Do not expect them +# to have a consistent behaviour across releases. +[experimental] + # Calculate the dpi to use on a per-monitor basis. + # If this setting is enabled the Xft.dpi value will be ignored and instead + # dunst will attempt to calculate an appropriate dpi value for each monitor + # using the resolution and physical size. This might be useful in setups + # where there are multiple screens with very different dpi values. + per_monitor_dpi = false + +[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 = "#191919" + foreground = "#999999" + timeout = 10 + # Icon for notifications with low urgency, uncomment to enable + #icon = /path/to/icon + +[urgency_normal] + background = "#191919" + foreground = "#ffffff" + timeout = 10 + # Icon for notifications with normal urgency, uncomment to enable + #icon = /path/to/icon + +[urgency_critical] + background = "#fd4d4d" + foreground = "#ffffff" + 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 (discouraged, see desktop_entry) +# body +# category +# desktop_entry +# icon +# match_transient +# msg_urgency +# stack_tag +# summary +# +# and you can override the +# background +# foreground +# format +# frame_color +# fullscreen +# new_icon +# set_stack_tag +# set_transient +# timeout +# urgency +# +# Shell-like globbing will get expanded. +# +# Instead of the appname filter, it's recommended to use the desktop_entry filter. +# GLib based applications export their desktop-entry name. In comparison to the appname, +# the desktop-entry won't get localized. +# +# SCRIPTING +# You can specify a script that gets run when the rule matches by +# setting the "script" option. +# The script will be called as follows: +# script appname summary body icon urgency +# where urgency can be "LOW", "NORMAL" or "CRITICAL". +# +# NOTE: 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. + +# Disable the transient hint so that idle_threshold cannot be bypassed from the +# client +#[transient_disable] +# match_transient = yes +# set_transient = no +# +# Make the handling of transient notifications more strict by making them not +# be placed in history. +#[transient_history_ignore] +# match_transient = yes +# history_ignore = yes + +# fullscreen values +# show: show the notifications, regardless if there is a fullscreen window opened +# delay: displays the new notification, if there is no fullscreen window active +# If the notification is already drawn, it won't get undrawn. +# pushback: same as delay, but when switching into fullscreen, the notification will get +# withdrawn from screen again and will get delayed like a new notification +#[fullscreen_delay_everything] +# fullscreen = delay +#[fullscreen_show_critical] +# msg_urgency = critical +# fullscreen = show + +#[espeak] +# summary = "*" +# script = dunst_espeak.sh + +#[script-test] +# summary = "*script*" +# script = dunst_test.sh + +#[ignore] +# # This notification will not be displayed +# summary = "foobar" +# format = "" + +#[history-ignore] +# # This notification will not be saved in history +# summary = "foobar" +# history_ignore = yes + +#[skip-display] +# # This notification will not be displayed, but will be included in the history +# summary = "foobar" +# skip_display = yes + +#[signed_on] +# appname = Pidgin +# summary = "*signed on*" +# urgency = low +# +#[signed_off] +# appname = Pidgin +# summary = *signed off* +# urgency = low +# +#[says] +# appname = Pidgin +# summary = *says* +# urgency = critical +# +#[twitter] +# appname = Pidgin +# summary = *twitter.com* +# urgency = normal +# +#[stack-volumes] +# appname = "some_volume_notifiers" +# set_stack_tag = "volume" +# +# vim: ft=cfg diff --git a/.config/mimeapps.list b/.config/mimeapps.list new file mode 100644 index 0000000..6c1db7b --- /dev/null +++ b/.config/mimeapps.list @@ -0,0 +1,222 @@ +[Default Applications] + +x-scheme-handler/lbry=lbry.desktop +x-scheme-handler/etcher=balena-etcher-electron.desktop +x-scheme-handler/http=org.qutebrowser.qutebrowser.desktop +x-scheme-handler/https=org.qutebrowser.qutebrowser.desktop +x-scheme-handler/qute=org.qutebrowser.qutebrowser.desktop +x-scheme-handler/mailto=neomutt.desktop + +applications/pdf=org.pwmt.zathura.desktop +application/pdf=org.pwmt.zathura.desktop + +text/comma-separated-values=nvim.desktop +text/csv=nvim.desktop +text/english=nvim.desktop +text/google-video-pointer=nvim.desktop +text/html=nvim.desktop +text/mathml=nvim.desktop +text/plain=nvim.desktop +text/rtf=nvim.desktop +text/spreadsheet=nvim.desktop +text/tab-separated-values=nvim.desktop +text/vnd.trolltech.linguist=nvim.desktop +text/x-c=nvim.desktop +text/x-c++=nvim.desktop +text/x-c++hdr=nvim.desktop +text/x-chdr=nvim.desktop +text/x-comma-separated-values=nvim.desktop +text/x-c++src=nvim.desktop +text/x-csrc=nvim.desktop +text/x-csv=nvim.desktop +text/x-google-video-pointer=nvim.desktop +text/x-java=nvim.desktop +text/x-makefile=nvim.desktop +text/xml=nvim.desktop +text/x-moc=nvim.desktop +text/x-pascal=nvim.desktop +text/x-tcl=nvim.desktop +text/x-tex=nvim.desktop + +audio/3gpp=mpv.desktop +audio/3gpp2=mpv.desktop +audio/aac=mpv.desktop +audio/ac3=mpv.desktop +audio/aiff=mpv.desktop +audio/AMR=mpv.desktop +audio/amr-wb=mpv.desktop +audio/AMR-WB=mpv.desktop +audio/basic=mpv.desktop +audio/dv=mpv.desktop +audio/eac3=mpv.desktop +audio/flac=mpv.desktop +audio/m3u=mpv.desktop +audio/m4a=mpv.desktop +audio/midi=mpv.desktop +audio/mp1=mpv.desktop +audio/mp2=mpv.desktop +audio/mp3=mpv.desktop +audio/mp4=mpv.desktop +audio/mpeg=mpv.desktop +audio/mpeg2=mpv.desktop +audio/mpeg3=mpv.desktop +audio/mpegurl=mpv.desktop +audio/mpg=mpv.desktop +audio/musepack=mpv.desktop +audio/ogg=mpv.desktop +audio/opus=mpv.desktop +audio/rn-mpeg=mpv.desktop +audio/scpls=mpv.desktop +audio/vnd.dolby.heaac.1=mpv.desktop +audio/vnd.dolby.heaac.2=mpv.desktop +audio/vnd.dolby.mlp=mpv.desktop +audio/vnd.dts=mpv.desktop +audio/vnd.dts.hd=mpv.desktop +audio/vnd.rn-realaudio=mpv.desktop +audio/vorbis=mpv.desktop +audio/wav=mpv.desktop +audio/webm=mpv.desktop +audio/x-aac=mpv.desktop +audio/x-adpcm=mpv.desktop +audio/x-aiff=mpv.desktop +audio/x-ape=mpv.desktop +audio/x-flac=mpv.desktop +audio/x-gsm=mpv.desktop +audio/x-gtp=mpv.desktop +audio/x-it=mpv.desktop +audio/x-m4a=mpv.desktop +audio/x-matroska=mpv.desktop +audio/x-mod=mpv.desktop +audio/x-mp1=mpv.desktop +audio/x-mp2=mpv.desktop +audio/x-mp3=mpv.desktop +audio/x-mpeg=mpv.desktop +audio/x-mpegurl=mpv.desktop +audio/x-mpg=mpv.desktop +audio/x-ms-asf=mpv.desktop +audio/x-ms-asx=mpv.desktop +audio/x-ms-wax=mpv.desktop +audio/x-ms-wma=mpv.desktop +audio/x-musepack=mpv.desktop +audio/x-pls=mpv.desktop +audio/x-pn-aiff=mpv.desktop +audio/x-pn-au=mpv.desktop +audio/x-pn-realaudio=mpv.desktop +audio/x-pn-realaudio-plugin=mpv.desktop +audio/x-pn-wav=mpv.desktop +audio/x-pn-windows-acm=mpv.desktop +audio/x-pn-windows-pcm=mpv.desktop +audio/x-ptb=mpv.desktop +audio/x-real-audio=mpv.desktop +audio/x-realaudio=mpv.desktop +audio/x-s3m=mpv.desktop +audio/x-scpls=mpv.desktop +audio/x-shorten=mpv.desktop +audio/x-speex=mpv.desktop +audio/x-tta=mpv.desktop +audio/x-vorbis=mpv.desktop +audio/x-vorbis+ogg=mpv.desktop +audio/x-wav=mpv.desktop +audio/x-wavpack=mpv.desktop +audio/x-xm=mpv.desktop + + +image/x-minolta-mrw=sxiv.desktop +image/webp=sxiv.desktop +image/vnd.ms-modi=sxiv.desktop +image/cgm=sxiv.desktop +image/vnd.rn-realpix=sxiv.desktop +image/x-pentax-pef=sxiv.desktop +image/vnd.dwg=sxiv.desktop +image/x-pict=sxiv.desktop +image/g3fax=sxiv.desktop +image/dpx=sxiv.desktop +image/x-kodak-kdc=sxiv.desktop +image/x-pic=sxiv.desktop +image/x-gimp-gih=sxiv.desktop +image/avif=sxiv.desktop +image/x-adobe-dng=sxiv.desktop +image/x-3ds=sxiv.desktop +image/x-kodak-dcr=sxiv.desktop +image/svg+xml-compressed=sxiv.desktop +image/x-panasonic-rw=sxiv.desktop +image/x-portable-bitmap=sxiv.desktop +image/ief=sxiv.desktop +image/tiff=sxiv.desktop +image/astc=sxiv.desktop +image/vnd.microsoft.icon=sxiv.desktop +image/jpm=sxiv.desktop +image/x-quicktime=sxiv.desktop +image/x-jp2-codestream=sxiv.desktop +image/x-icns=sxiv.desktop +image/x-applix-graphics=sxiv.desktop +image/x-kodak-k25=sxiv.desktop +image/x-sony-srf=sxiv.desktop +image/x-xfig=sxiv.desktop +image/x-xwindowdump=sxiv.desktop +image/jpx=sxiv.desktop +image/x-tiff-multipage=sxiv.desktop +image/heif=sxiv.desktop +image/x-canon-cr2=sxiv.desktop +image/x-macpaint=sxiv.desktop +image/x-skencil=sxiv.desktop +image/x-portable-anymap=sxiv.desktop +image/x-jng=sxiv.desktop +image/x-dib=sxiv.desktop +image/x-rgb=sxiv.desktop +image/x-sigma-x3f=sxiv.desktop +image/x-xbitmap=sxiv.desktop +image/x-sun-raster=sxiv.desktop +image/x-eps=sxiv.desktop +image/x-gimp-gbr=sxiv.desktop +image/x-gzeps=sxiv.desktop +image/x-sony-arw=sxiv.desktop +image/png=sxiv.desktop +image/wmf=sxiv.desktop +image/fits=sxiv.desktop +image/jpeg=sxiv.desktop +image/vnd.dxf=sxiv.desktop +image/emf=sxiv.desktop +image/x-photo-cd=sxiv.desktop +image/x-cmu-raster=sxiv.desktop +image/x-olympus-orf=sxiv.desktop +image/vnd.djvu=sxiv.desktop +image/x-fuji-raf=sxiv.desktop +image/x-kde-raw=sxiv.desktop +image/x-portable-pixmap=sxiv.desktop +image/vnd.zbrush.pcx=sxiv.desktop +image/x-lwo=sxiv.desktop +image/x-win-bitmap=sxiv.desktop +image/x-exr=sxiv.desktop +image/ktx=sxiv.desktop +image/x-niff=sxiv.desktop +image/x-xcf=sxiv.desktop +image/x-lws=sxiv.desktop +image/x-xcursor=sxiv.desktop +image/x-sgi=sxiv.desktop +image/x-msod=sxiv.desktop +image/x-fpx=sxiv.desktop +image/vnd.adobe.photoshop=sxiv.desktop +image/x-panasonic-rw2=sxiv.desktop +image/x-nikon-nef=sxiv.desktop +image/vnd.wap.wbmp=sxiv.desktop +image/x-compressed-xcf=sxiv.desktop +image/x-hdr=sxiv.desktop +image/x-portable-graymap=sxiv.desktop +image/jp2=sxiv.desktop +image/x-bzeps=sxiv.desktop +image/svg+xml=sxiv.desktop +image/rle=sxiv.desktop +image/gif=sxiv.desktop +image/x-dcraw=sxiv.desktop +image/ktx2=sxiv.desktop +image/x-tga=sxiv.desktop +image/vnd.djvu+multipage=sxiv.desktop +image/x-dds=sxiv.desktop +image/x-sony-sr2=sxiv.desktop +image/openraster=sxiv.desktop +image/x-canon-crw=sxiv.desktop +image/x-ilbm=sxiv.desktop +image/x-xpixmap=sxiv.desktop +image/x-gimp-pat=sxiv.desktop +image/bmp=sxiv.desktop diff --git a/.config/mutt/muttrc b/.config/mutt/muttrc new file mode 100644 index 0000000..8896639 --- /dev/null +++ b/.config/mutt/muttrc @@ -0,0 +1,31 @@ +# vim: filetype=neomuttrc +source /usr/share/mutt-wizard/mutt-wizard.muttrc + +set editor = "nvim" +auto_view text/html + +color hdrdefault green black +color quoted blue black +color signature blue black +color attachment red black +color prompt brightmagenta black +color message brightred black +color error brightred black +color indicator black green +color status color234 green +color tree brightblack black +color normal white black +color markers green black +color search white black +color tilde brightmagenta black +color index blue black ~F +color index green black "~N|~O" + +bind pager j next-line +bind pager k previous-line +bind attach,index,pager \CD next-page +bind attach,index,pager \CU previous-page +bind pager G bottom +bind attach,index G last-entry +bind pager l next-undeleted +bind pager h previous-undeleted diff --git a/.config/nvim/.netrwhist b/.config/nvim/.netrwhist new file mode 100644 index 0000000..a27bcca --- /dev/null +++ b/.config/nvim/.netrwhist @@ -0,0 +1,12 @@ +let g:netrw_dirhistmax =10 +let g:netrw_dirhistcnt =1 +let g:netrw_dirhist_1='/home/nathanreiner/Dokumente/ctf' +let g:netrw_dirhist_0='/home/nathanreiner/Dokumente/ctf/misc' +let g:netrw_dirhist_9='/home/nathanreiner/Dokumente/ctf' +let g:netrw_dirhist_8='/home/nathanreiner' +let g:netrw_dirhist_7='/home/nathanreiner/.config/nvim' +let g:netrw_dirhist_6='/home/nathanreiner' +let g:netrw_dirhist_5='/home/nathanreiner/.config/nvim' +let g:netrw_dirhist_4='/home/nathanreiner' +let g:netrw_dirhist_3='/home/nathanreiner/Dokumente/C++' +let g:netrw_dirhist_2='/home/nathanreiner/Dokumente' diff --git a/.config/nvim/README.md b/.config/nvim/README.md new file mode 100644 index 0000000..12b2670 --- /dev/null +++ b/.config/nvim/README.md @@ -0,0 +1,3 @@ +# NeoVim Configuration + +My NeoVim Configuration diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua new file mode 100644 index 0000000..95f4370 --- /dev/null +++ b/.config/nvim/init.lua @@ -0,0 +1,10 @@ +-- ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +-- ┃ ┏┓╻┏━┓ ╻ ╻╻┏┳┓ ┏━╸┏━┓┏┓╻┏━╸╻┏━╸╻ ╻┏━┓┏━┓╺┳╸╻┏━┓┏┓╻ ┃ +-- ┃ ┃┗┫┣━┫ ┃┏┛┃┃┃┃ ┃ ┃ ┃┃┗┫┣╸ ┃┃╺┓┃ ┃┣┳┛┣━┫ ┃ ┃┃ ┃┃┗┫ ┃ +-- ┃ ╹ ╹┗━┛ ┗┛ ╹╹ ╹ ┗━╸┗━┛╹ ╹╹ ╹┗━┛┗━┛╹┗╸╹ ╹ ╹ ╹┗━┛╹ ╹ ┃ +-- ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +require('plug') +require('keymap') +require('settings') +require('lsp') diff --git a/.config/nvim/lua/keymap.lua b/.config/nvim/lua/keymap.lua new file mode 100644 index 0000000..200c5cb --- /dev/null +++ b/.config/nvim/lua/keymap.lua @@ -0,0 +1,55 @@ +-- ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +-- ┃ ┏┓╻┏━┓ ╻ ╻╻┏┳┓ ╻┏ ┏━╸╻ ╻┏┳┓┏━┓┏━┓┏━┓ ┃ +-- ┃ ┃┗┫┣━┫ ┃┏┛┃┃┃┃ ┣┻┓┣╸ ┗┳┛┃┃┃┣━┫┣━┛┗━┓ ┃ +-- ┃ ╹ ╹┗━┛ ┗┛ ╹╹ ╹ ╹ ╹┗━╸ ╹ ╹ ╹╹ ╹╹ ┗━┛ ┃ +-- ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +vim.g.mapleader = ',' +vim.api.nvim_set_keymap("n", "<leader>C", "<leader>c<space>", {}) +vim.api.nvim_set_keymap("n", "<leader>n", "<C-w>n", {noremap = true}) +vim.api.nvim_set_keymap("n", "<leader>sc", ":so $MYVIMRC<CR>", {noremap = true}) +vim.api.nvim_set_keymap("n", "<leader>ec", ":e $MYVIMRC<CR>", {noremap = true}) +vim.api.nvim_set_keymap("n", "<leader>tn", ":tabnew<CR>", {noremap = true}) +vim.api.nvim_set_keymap("n", "<leader>tc", ":tabclose<CR>", {noremap = true}) +vim.api.nvim_set_keymap("n", "<leader>tt", ":tabnew<CR>:term<CR>a", {noremap = true}) +vim.api.nvim_set_keymap("n", "<leader>Tn", ":tnext<CR>", {noremap = true}) +vim.api.nvim_set_keymap("n", "<leader>Tp", ":tprevious<CR>", {noremap = true}) +vim.api.nvim_set_keymap("n", "<leader>Tf", ":tfirst<CR>", {noremap = true}) +vim.api.nvim_set_keymap("n", "<leader>Tl", ":tlast<CR>", {noremap = true}) +vim.api.nvim_set_keymap("n", "<leader>tselect", ":tselect<Space>", {noremap = true}) +vim.api.nvim_set_keymap("n", "<leader>Tc", ":!ctags -R --sort=yes --c++-kins=+p --filed=+iaS --extras=+q . <CR><CR>", {noremap = true}) + +vim.api.nvim_set_keymap("n", "<leader>f", ":Lexplore<CR>", {noremap = true}) +vim.api.nvim_set_keymap("n", "<leader>F", ":Lexplore %:p:h<CR>", {noremap = true}) + +vim.api.nvim_set_keymap("n", "<leader>zt", ":VZKFindTag<CR>", {noremap = true}) +vim.api.nvim_set_keymap("n", "<leader>zh", ":VZKHistory<CR>", {noremap = true}) + +vim.api.nvim_set_keymap("i", "(", "()<Esc>i", {noremap = true}) +vim.api.nvim_set_keymap("i", ")", "<ESC>:call brackify#putbracket(')')<CR>la", {noremap = true}) +vim.api.nvim_set_keymap("i", "[", "[]<Esc>i", {noremap = true}) +vim.api.nvim_set_keymap("i", "]", "<ESC>:call brackify#putbracket(']')<CR>la", {noremap = true}) +vim.api.nvim_set_keymap("i", "{", "{}<Esc>i", {noremap = true}) +vim.api.nvim_set_keymap("i", "}", "<ESC>:call brackify#putbracket('}')<CR>la", {noremap = true}) +vim.cmd('autocmd Filetype html inoremap <buffer> < <><ESC>i') +vim.cmd('autocmd Filetype html inoremap <buffer> > <ESC>:call brackify#putbracket(">")<CR>la') + +vim.api.nvim_set_keymap("i", '"', "<ESC>:call brackify#putquotes('\"')<CR>a", {noremap = true}) +vim.api.nvim_set_keymap("i", "'", "<ESC>:call brackify#putquotes(\"'\")<CR>a", {noremap = true}) + +vim.api.nvim_set_keymap("v", "(", "s(<ESC>pa)", {noremap = true}) +vim.api.nvim_set_keymap("v", "[", "s[<ESC>pa]", {noremap = true}) +vim.api.nvim_set_keymap("v", "{", "s{<ESC>pa}", {noremap = true}) +vim.api.nvim_set_keymap("v", '"', 's"<ESC>pa"', {noremap = true}) +vim.api.nvim_set_keymap("v", "'", "s'<ESC>pa'", {noremap = true}) +vim.cmd('autocmd Filetype c nnoremap <buffer> <tab> :CSelNextArg<Cr>') + +vim.api.nvim_set_keymap("n", "<leader>dB", ":GdbBreakpointToggle", {noremap = true}) +vim.api.nvim_set_keymap("n", "<leader>dn", ":GdbNext", {noremap = true}) +vim.api.nvim_set_keymap("n", "<leader>ds", ":GdbStep", {noremap = true}) +vim.api.nvim_set_keymap("n", "<leader>dr", ":GdbRun", {noremap = true}) +vim.api.nvim_set_keymap("n", "<leader>dc", ":GdbContinue", {noremap = true}) +vim.cmd('inoremap <expr> <Tab> pumvisible() ? "\\<C-n>" : "\\<Tab>"') +vim.cmd('inoremap <expr> <S-Tab> pumvisible() ? "\\<C-p>" : "\\<S-Tab>"') + +vim.cmd("autocmd TextChangedI * lua vim.lsp.omnifunc(1)") diff --git a/.config/nvim/lua/lsp.lua b/.config/nvim/lua/lsp.lua new file mode 100644 index 0000000..41c9e16 --- /dev/null +++ b/.config/nvim/lua/lsp.lua @@ -0,0 +1,46 @@ +local clangd_on_attach = function(client, bufnr) + + local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end + local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end + + -- Enable completion triggered by <c-x><c-o> + buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') + + -- Mappings. + local opts = { noremap=true, silent=true } + -- See `:help vim.lsp.*` for documentation on any of the below functions + buf_set_keymap('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts) + buf_set_keymap('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts) + buf_set_keymap('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts) + buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts) + buf_set_keymap('n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts) + buf_set_keymap('n', '<space>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts) + buf_set_keymap('n', '<space>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts) + buf_set_keymap('n', '<space>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts) + buf_set_keymap('n', '<space>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts) + buf_set_keymap('n', '<space>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts) + buf_set_keymap('n', '<space>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts) + buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts) + buf_set_keymap('n', '<space>e', '<cmd>lua vim.diagnostic.open_float()<CR>', opts) + buf_set_keymap('n', '[d', '<cmd>lua vim.diagnostic.goto_prev()<CR>', opts) + buf_set_keymap('n', ']d', '<cmd>lua vim.diagnostic.goto_next()<CR>', opts) + buf_set_keymap('n', '<space>q', '<cmd>lua vim.diagnostic.setloclist()<CR>', opts) + buf_set_keymap('n', '<space>f', '<cmd>lua vim.lsp.buf.formatting()<CR>', opts) + buf_set_keymap('i', '<c-space>', '<c-x><c-o>', opts) + buf_set_keymap('i', '::', '::<c-x><c-o>', opts) + buf_set_keymap('i', '.', '.<c-x><c-o>', opts) + buf_set_keymap('i', '->', '-><c-x><c-o>', opts) + buf_set_keymap('i', '<BS>', '<BS><c-x><c-o>', opts); +end + + +require('lspconfig').clangd.setup{ + cmd = { + "clangd", + "--enable-config", + "--background-index", + "--pch-storage=memory", + "--all-scopes-completion", + }, + on_attach = clangd_on_attach, +} diff --git a/.config/nvim/lua/plug.lua b/.config/nvim/lua/plug.lua new file mode 100644 index 0000000..43c036e --- /dev/null +++ b/.config/nvim/lua/plug.lua @@ -0,0 +1,22 @@ +-- ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +-- ┃ ┏┓╻┏━┓ ╻ ╻╻┏┳┓ ┏━┓╻ ╻ ╻┏━╸╻┏┓╻┏━┓ ┃ +-- ┃ ┃┗┫┣━┫ ┃┏┛┃┃┃┃ ┣━┛┃ ┃ ┃┃╺┓┃┃┗┫┗━┓ ┃ +-- ┃ ╹ ╹┗━┛ ┗┛ ╹╹ ╹ ╹ ┗━╸┗━┛┗━┛╹╹ ╹┗━┛ ┃ +-- ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +local Plug = vim.fn['plug#'] + +vim.call('plug#begin', '~/.local/share/nvim/plugged') + +Plug 'airblade/vim-gitgutter' +Plug 'tpope/vim-fugitive' +Plug 'scrooloose/nerdcommenter' +Plug 'neovim/nvim-lspconfig' +Plug 'NPScript/vim-zettelkasten' +Plug 'sakhnik/nvim-gdb' +Plug 'nvim-treesitter/nvim-treesitter' +Plug 'jalvesaq/Nvim-R' + +vim.call('plug#end') + + diff --git a/.config/nvim/lua/settings.lua b/.config/nvim/lua/settings.lua new file mode 100644 index 0000000..c3bd598 --- /dev/null +++ b/.config/nvim/lua/settings.lua @@ -0,0 +1,45 @@ +-- ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +-- ┃ ┏┓╻┏━┓ ╻ ╻╻┏┳┓ ┏━┓┏━╸╺┳╸╺┳╸╻┏┓╻┏━╸┏━┓ ┃ +-- ┃ ┃┗┫┣━┫ ┃┏┛┃┃┃┃ ┗━┓┣╸ ┃ ┃ ┃┃┗┫┃╺┓┗━┓ ┃ +-- ┃ ╹ ╹┗━┛ ┗┛ ╹╹ ╹ ┗━┛┗━╸ ╹ ╹ ╹╹ ╹┗━┛┗━┛ ┃ +-- ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + +vim.opt.shell = '/usr/bin/zsh' +vim.opt.path = "**" + +vim.cmd('colorscheme n8') + +vim.opt.mouse = 'a' +vim.opt.tabstop = 2 +vim.opt.softtabstop = 0 +vim.opt.expandtab = false +vim.opt.shiftwidth = 2 +vim.opt.smartindent = true +vim.opt.list = true; +vim.opt.listchars = { tab= '> ', eol = '¬', trail = '·', nbsp = '•'} +vim.opt.splitright = true +vim.opt.splitbelow = false +vim.opt.laststatus = 2 +vim.opt.clipboard = "unnamedplus" +vim.opt.number = true +vim.opt.showcmd = true +vim.opt.wildmenu = true +vim.opt.hlsearch = true +vim.opt.conceallevel = 2 +vim.opt.colorcolumn = "80" +vim.cmd('filetype indent on') + +vim.opt.completeopt = { "menuone", "menu", "longest", "preview", "noinsert", "noselect" } + +vim.opt.spelllang = { "de_ch", "en_us" } + +vim.g.netrw_liststyle = 3 +vim.g.netrw_banner = false +vim.g.netrw_browser_split = 2 +vim.g.netrw_keepdir = true +vim.g.netrw_winsize = 30 +vim.cmd('autocmd Filetype netrw setlocal nolist') + +vim.g.airline_powerline_fonts = true + +vim.cmd("call statusbar#refresh()") diff --git a/.config/qutebrowser/autoconfig.yml b/.config/qutebrowser/autoconfig.yml new file mode 100644 index 0000000..f03d42d --- /dev/null +++ b/.config/qutebrowser/autoconfig.yml @@ -0,0 +1,138 @@ +# If a config.py file exists, this file is ignored unless it's explicitly loaded +# via config.load_autoconfig(). For more information, see: +# https://github.com/qutebrowser/qutebrowser/blob/master/doc/help/configuring.asciidoc#loading-autoconfigyml +# DO NOT edit this file by hand, qutebrowser will overwrite it. +# Instead, create a config.py - see :help for details. + +config_version: 2 +settings: + bindings.commands: + global: + normal: + gle: spawn --userscript leo-eng + glf: spawn --userscript leo-fr + colors.completion.category.bg: + global: '#252525' + colors.completion.category.border.bottom: + global: '#252525' + colors.completion.category.border.top: + global: '#252525' + colors.completion.even.bg: + global: '#181818' + colors.completion.item.selected.bg: + global: '#547f62' + colors.completion.item.selected.border.bottom: + global: '#547f62' + colors.completion.item.selected.border.top: + global: '#547f62' + colors.completion.item.selected.match.fg: + global: '#ffffff' + colors.completion.match.fg: + global: '#547f62' + colors.completion.odd.bg: + global: '#181818' + colors.completion.scrollbar.bg: + global: '#252525' + colors.completion.scrollbar.fg: + global: '#547f62' + colors.messages.error.bg: + global: '#bc5858' + colors.messages.info.bg: + global: '#181818' + colors.messages.warning.bg: + global: '#e8c75c' + colors.statusbar.command.bg: + global: '#181818' + colors.statusbar.insert.bg: + global: '#252525' + colors.statusbar.normal.bg: + global: '#181818' + colors.statusbar.progress.bg: + global: '#547f62' + colors.statusbar.url.error.fg: + global: '#bc5858' + colors.statusbar.url.hover.fg: + global: '#6da6ce' + colors.statusbar.url.success.http.fg: + global: '#989898' + colors.statusbar.url.success.https.fg: + global: '#547f62' + colors.tabs.bar.bg: + global: '#181818' + colors.tabs.even.bg: + global: '#181818' + colors.tabs.even.fg: + global: '#999' + colors.tabs.indicator.error: + global: '#e8c75c' + colors.tabs.indicator.start: + global: '#6da6ce' + colors.tabs.indicator.stop: + global: '#547f62' + colors.tabs.odd.bg: + global: '#181818' + colors.tabs.odd.fg: + global: '#999' + colors.tabs.selected.even.bg: + global: '#547f62' + colors.tabs.selected.odd.bg: + global: '#547f62' + colors.webpage.darkmode.algorithm: + global: lightness-cielab + colors.webpage.darkmode.enabled: + global: false + colors.webpage.darkmode.grayscale.all: + global: true + colors.webpage.darkmode.grayscale.images: + global: 0.5 + colors.webpage.darkmode.policy.images: + global: never + colors.webpage.darkmode.policy.page: + global: always + colors.webpage.darkmode.threshold.background: + global: 24 + content.blocking.enabled: + global: true + content.blocking.method: + global: adblock + content.notifications.enabled: + https://www.chess.com: false + https://www.reddit.com: false + downloads.location.directory: + global: ~/Downloads + qt.force_platformtheme: + global: null + qt.workarounds.locale: + global: true + qt.workarounds.remove_service_workers: + global: false + statusbar.padding: + global: + bottom: 5 + left: 5 + right: 5 + top: 5 + statusbar.position: + global: bottom + tabs.indicator.padding: + global: + bottom: 4 + left: 2 + right: 5 + top: 4 + tabs.indicator.width: + global: 9 + tabs.max_width: + global: 250 + tabs.padding: + global: + bottom: 5 + left: 5 + right: 5 + top: 5 + tabs.position: + global: top + url.default_page: + global: ~/.config/startpage/start.html + url.start_pages: + global: ~/.config/startpage/start.html diff --git a/.config/sc-im/scimrc b/.config/sc-im/scimrc new file mode 100644 index 0000000..13761e4 --- /dev/null +++ b/.config/sc-im/scimrc @@ -0,0 +1,10 @@ +set autocalc +set numeric +set numeric_decimal=0 +set overlap +set xlsx_readformulas + +color "type=HEADINGS bold=0 fg=BLACK bg=GREEN" +color "type=HEADINGS_ODD bold=0 fg=BLACK bg=GREEN" +color "type=CELL_SELECTION bold=0 fg=BLACK bg=GREEN" +color "type=CELL_SELECTION_SC bold=0 fg=BLACK bg=BLUE" diff --git a/.config/sway/config b/.config/sway/config new file mode 100644 index 0000000..3621a50 --- /dev/null +++ b/.config/sway/config @@ -0,0 +1,287 @@ +# Default config for sway +# +# Copy this to ~/.config/sway/config and edit it to your liking. +# +# Read `man 5 sway` for a complete reference. + +### Variables +# +# Logo key. Use Mod1 for Alt. +set $mod Mod4 +# Home row direction keys, like vim +set $left h +set $down j +set $up k +set $right l +# Your preferred terminal emulator +set $term st +# Your preferred application launcher +# Note: pass the final command to swaymsg so that the resulting window can be opened +# on the original workspace that the command was run on. +set $menu dmenu_path | dmenu | xargs swaymsg exec -- + +set $browser qutebrowser +set $cmus st -e cmus +set $mail st -e neomutt +set $pass passmenu --type +set $filebrowser st -e luis + +set $lock swaylock -c 181818 \ + --font "Source Code Pro" \ + --inside-color 181818 \ + --inside-ver-color 181818 \ + --ring-color 547f62 \ + --ring-ver-color 547f62 \ + --separator-color 547f62 \ + --text-color ffffff \ + --text-ver-color ffffff \ + -r -K + +### Output configuration +# +# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/) + +output * bg /home/nathanreiner/Bilder/bg.png fill +# +# Example configuration: +# +# output HDMI-A-1 resolution 1920x1080 position 1920,0 +# +# You can get the names of your outputs by running: swaymsg -t get_outputs + +output VGA-1 transform 270 +output VGA-1 pos 0 0 +output HDMI-1 pos 1600 0 +output VGA-1 mode --custom 1600x900@59.946Hz + +default_border pixel 2 + +# Set colors +set $bg #181818 +set $fg #eff1f5 +set $br #547f62 +set $ia #232425 + + +# class border backgr. text indicator child_border +client.focused $br $br $fg $bg $br +client.focused_inactive $bg $bg $fg $bg $bg +client.unfocused $bg $bg $fg $bg $bg +#client.urgent $br $br $fg $bg $br #currently not implemented +#client.placeholder $br $br $fg $bg $br #currently not implemented +client.background $bg + +### Idle configuration +# +# Example configuration: +# +exec swayidle -w \ + timeout 300 'swaylock -f -c 000000' \ + timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \ + before-sleep 'swaylock -f -c 000000' +# +# This will lock your screen after 300 seconds of inactivity, then turn off +# your displays after another 300 seconds, and turn your screens back on when +# resumed. It will also lock your screen before your computer goes to sleep. + +### Input configuration +# +# Example configuration: +# +# input "2:14:SynPS/2_Synaptics_TouchPad" { +# dwt enabled +# tap enabled +# natural_scroll enabled +# middle_emulation enabled +# } +# +# You can get the names of your inputs by running: swaymsg -t get_inputs +# Read `man 5 sway-input` for more information about this section. + +input "9494:66:Cooler_Master_Technology_Inc._MasterKeys_Lite_L_Combo_Keyboard(KB)" { + # Keyboard + xkb_layout "us,ch" + xkb_variant ",de_mac" + xkb_options "caps:escape,grp:win_space_toggle" +} + +input "1133:49257:Logitech_USB_Laser_Mouse" { + natural_scroll "enabled" +} + +### Key bindings +# +# Basics: +# + bindsym $mod+Shift+Return exec $term + bindsym $mod+Shift+b exec $browser + bindsym $mod+Shift+m exec $cmus + bindsym $mod+Shift+e exec $mail + bindsym $mod+Escape exec $lock + bindsym $mod+Shift+p exec $pass + bindsym $mod+Shift+f exec $filebrowser + + bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% + bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% + bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle + bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle + bindsym XF86MonBrightnessDown exec brightnessctl set 5%- + bindsym XF86MonBrightnessUp exec brightnessctl set +5% + bindsym XF86AudioPlay exec playerctl play-pause + bindsym XF86AudioNext exec playerctl next + bindsym XF86AudioPrev exec playerctl previous + + # Kill focused window + bindsym $mod+Shift+c kill + + # Start your launcher + bindsym $mod+p exec $menu + + # Drag floating windows by holding down $mod and left mouse button. + # Resize them with right mouse button + $mod. + # Despite the name, also works for non-floating windows. + # Change normal to inverse to use left mouse button for resizing and right + # mouse button for dragging. + floating_modifier $mod normal + + # Reload the configuration file + bindsym $mod+c reload + + # Exit sway (logs you out of your Wayland session) + bindsym $mod+Shift+q exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit' +# +# Moving around: +# + # Move your focus around + bindsym $mod+$left focus left + bindsym $mod+$down focus down + bindsym $mod+$up focus up + bindsym $mod+$right focus right + # Or use $mod+[up|down|left|right] + bindsym $mod+Left focus left + bindsym $mod+Down focus down + bindsym $mod+Up focus up + bindsym $mod+Right focus right + + # Move the focused window with the same, but add Shift + bindsym $mod+Shift+$left move left + bindsym $mod+Shift+$down move down + bindsym $mod+Shift+$up move up + bindsym $mod+Shift+$right move right + # Ditto, with arrow keys + bindsym $mod+Shift+Left move left + bindsym $mod+Shift+Down move down + bindsym $mod+Shift+Up move up + bindsym $mod+Shift+Right move right +# +# Workspaces: +# + # Switch to workspace + bindsym $mod+1 workspace number 1 + bindsym $mod+2 workspace number 2 + bindsym $mod+3 workspace number 3 + bindsym $mod+4 workspace number 4 + bindsym $mod+5 workspace number 5 + bindsym $mod+6 workspace number 6 + bindsym $mod+7 workspace number 7 + bindsym $mod+8 workspace number 8 + bindsym $mod+9 workspace number 9 + bindsym $mod+0 workspace number 10 + # Move focused container to workspace + bindsym $mod+Shift+1 move container to workspace number 1 + bindsym $mod+Shift+2 move container to workspace number 2 + bindsym $mod+Shift+3 move container to workspace number 3 + bindsym $mod+Shift+4 move container to workspace number 4 + bindsym $mod+Shift+5 move container to workspace number 5 + bindsym $mod+Shift+6 move container to workspace number 6 + bindsym $mod+Shift+7 move container to workspace number 7 + bindsym $mod+Shift+8 move container to workspace number 8 + bindsym $mod+Shift+9 move container to workspace number 9 + bindsym $mod+Shift+0 move container to workspace number 10 + # Note: workspaces can have any name you want, not just numbers. + # We just use 1-10 as the default. +# +# Layout stuff: +# + # You can "split" the current object of your focus with + # $mod+b or $mod+v, for horizontal and vertical splits + # respectively. + bindsym $mod+b splith + bindsym $mod+v splitv + + # Switch the current container between different layout styles + bindsym $mod+s layout stacking + bindsym $mod+w layout tabbed + bindsym $mod+e layout toggle split + + # Make the current focus fullscreen + bindsym $mod+f fullscreen + + # Toggle the current focus between tiling and floating mode + bindsym $mod+Shift+space floating toggle + + # Swap focus between the tiling area and the floating area + bindsym $mod+space focus mode_toggle + + # Move focus to the parent container + bindsym $mod+a focus parent +# +# Scratchpad: +# + # Sway has a "scratchpad", which is a bag of holding for windows. + # You can send windows there and get them back later. + + # Move the currently focused window to the scratchpad + bindsym $mod+Shift+minus move scratchpad + + # Show the next scratchpad window or hide the focused scratchpad window. + # If there are multiple scratchpad windows, this command cycles through them. + bindsym $mod+minus scratchpad show +# +# Resizing containers: +# +mode "resize" { + # left will shrink the containers width + # right will grow the containers width + # up will shrink the containers height + # down will grow the containers height + bindsym $left resize shrink width 10px + bindsym $down resize grow height 10px + bindsym $up resize shrink height 10px + bindsym $right resize grow width 10px + + # Ditto, with arrow keys + bindsym Left resize shrink width 10px + bindsym Down resize grow height 10px + bindsym Up resize shrink height 10px + bindsym Right resize grow width 10px + + # Return to default mode + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+r mode "resize" + +# +# Status Bar: +# +# Read `man 5 sway-bar` for more information about this section. +# bar { +# position top +# +# # When the status_command prints a new line to stdout, swaybar updates. +# # The default just shows the current date and time. +# status_command while date +'%Y-%m-%d %l:%M:%S %p'; do sleep 1; done +# +# colors { +# statusline #ffffff +# background #323232 +# inactive_workspace #32323200 #32323200 #5c5c5c +# } +# } + +exec waybar + +include /etc/sway/config.d/* + +exec sprogs diff --git a/.config/waybar/config b/.config/waybar/config new file mode 100644 index 0000000..9743a0f --- /dev/null +++ b/.config/waybar/config @@ -0,0 +1,160 @@ +{ + // "layer": "top", // Waybar at top layer + // "position": "bottom", // Waybar position (top|bottom|left|right) + "height": 30, // Waybar height (to be removed for auto height) + // "width": 1280, // Waybar width + "spacing": 4, // Gaps between modules (4px) + // Choose the order of the modules + "modules-left": ["sway/workspaces"], + "modules-center": ["sway/window"], + "modules-right": ["pulseaudio", "network", "sway/language", "clock", "tray"], + // Modules configuration + // "sway/workspaces": { + // "disable-scroll": true, + // "all-outputs": true, + // "format": "{name}: {icon}", + // "format-icons": { + // "1": "", + // "2": "", + // "3": "", + // "4": "", + // "5": "", + // "urgent": "", + // "focused": "", + // "default": "" + // } + // }, + "keyboard-state": { + "numlock": true, + "capslock": true, + "format": "{name} {icon}", + "format-icons": { + "locked": "", + "unlocked": "" + } + }, + "sway/mode": { + "format": "<span style=\"italic\">{}</span>" + }, + "mpd": { + "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ", + "format-disconnected": "Disconnected ", + "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ", + "unknown-tag": "N/A", + "interval": 2, + "consume-icons": { + "on": " " + }, + "random-icons": { + "off": "<span color=\"#f53c3c\"></span> ", + "on": " " + }, + "repeat-icons": { + "on": " " + }, + "single-icons": { + "on": "1 " + }, + "state-icons": { + "paused": "", + "playing": "" + }, + "tooltip-format": "MPD (connected)", + "tooltip-format-disconnected": "MPD (disconnected)" + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "", + "deactivated": "" + } + }, + "tray": { + // "icon-size": 21, + "spacing": 10 + }, + "clock": { + // "timezone": "America/New_York", + "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>", + "format-alt": "{:%Y-%m-%d}" + }, + "cpu": { + "format": "{usage}% ", + "tooltip": false + }, + "memory": { + "format": "{}% " + }, + "temperature": { + // "thermal-zone": 2, + // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", + "critical-threshold": 80, + // "format-critical": "{temperatureC}°C {icon}", + "format": "{temperatureC}°C {icon}", + "format-icons": ["", "", ""] + }, + "backlight": { + // "device": "acpi_video1", + "format": "{percent}% {icon}", + "format-icons": ["", ""] + }, + "battery": { + "states": { + // "good": 95, + "warning": 30, + "critical": 15 + }, + "format": "{capacity}% {icon}", + "format-charging": "{capacity}% ", + "format-plugged": "{capacity}% ", + "format-alt": "{time} {icon}", + // "format-good": "", // An empty format will hide the module + // "format-full": "", + "format-icons": ["", "", "", "", ""] + }, + "battery#bat2": { + "bat": "BAT2" + }, + "network": { + // "interface": "wlp2*", // (Optional) To force the use of this interface + "format-wifi": "{essid} ({signalStrength}%) ", + "format-ethernet": "{ipaddr}/{cidr} ", + "tooltip-format": "{ifname} via {gwaddr} ", + "format-linked": "{ifname} (No IP) ", + "format-disconnected": "Disconnected ⚠", + "format-alt": "{ifname}: {ipaddr}/{cidr}" + }, + "pulseaudio": { + // "scroll-step": 1, // %, can be a float + "format": "{volume}% {icon}", + "format-bluetooth": "{volume}% {icon} {format_source}", + "format-bluetooth-muted": " {icon} {format_source}", + "format-muted": " {format_source}", + "format-source": "{volume}% ", + "format-source-muted": "", + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["", "", ""] + }, + "on-click": "pavucontrol" + }, + "custom/media": { + "format": "{icon} {}", + "return-type": "json", + "max-length": 40, + "format-icons": { + "Playing": ">", + "Pause": "||", + "No players found": "0" + }, + "escape": true, + "exec": "playerctl status 2> /dev/null" // Script in resources folder + // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name + }, +} + diff --git a/.config/waybar/style.css b/.config/waybar/style.css new file mode 100644 index 0000000..99be8d7 --- /dev/null +++ b/.config/waybar/style.css @@ -0,0 +1,127 @@ +* { + /* `otf-font-awesome` is required to be installed for icons */ + font-family: 'Source Code Pro', Roboto, Helvetica, Arial, sans-serif; + font-size: 13px; +} + +window#waybar { + background-color: #191919; + border-bottom: 3px solid #282828; + color: #ffffff; + transition-property: background-color; + transition-duration: .5s; +} + +window#waybar.hidden { + opacity: 0.2; +} + +/* +window#waybar.empty { +background-color: transparent; +} +window#waybar.solo { +background-color: #FFFFFF; +} + */ + + window#waybar.termite { + background-color: #3F3F3F; + } + + window#waybar.chromium { + background-color: #000000; + border: none; + } + + #workspaces button { + padding: 0 5px; + background-color: transparent; + color: #ffffff; + /* Use box-shadow instead of border so the text isn't offset */ + box-shadow: inset 0 -3px transparent; + /* Avoid rounded borders under each workspace name */ + border: none; + border-radius: 0; + } + + /* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ + #workspaces button:hover { + background: rgba(0, 0, 0, 0); + box-shadow: inset 0 -3px #547f62; + } + + #workspaces button.focused { + background-color: #547f62; + box-shadow: inset 0 -3px #547f62; + } + + #workspaces button.urgent { + background-color: #eb4d4b; + } + + #mode { + background-color: #64727D; + border-bottom: 3px solid #ffffff; + } + + #clock, + #battery, + #cpu, + #memory, + #disk, + #temperature, + #backlight, + #network, + #pulseaudio, + #custom-media, + #language, + #tray, + #mode, + #idle_inhibitor, + #mpd { + padding: 0 10px; + color: #ffffff; + background-color: #282828; + } + + #window, + #workspaces { + margin: 0 4px; + } + + /* If workspaces is the leftmost module, omit left margin */ + .modules-left > widget:first-child > #workspaces { + margin-left: 0; + } + + /* If workspaces is the rightmost module, omit right margin */ + .modules-right > widget:last-child > #workspaces { + margin-right: 0; + } + + @keyframes blink { + to { + background-color: #ffffff; + color: #000000; + } + } + + #battery.critical:not(.charging) { + background-color: #f53c3c; + color: #ffffff; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; + } + + #tray > .passive { + -gtk-icon-effect: dim; + } + + #tray > .needs-attention { + -gtk-icon-effect: highlight; + background-color: #eb4d4b; + } diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc new file mode 100644 index 0000000..7eb08bb --- /dev/null +++ b/.config/zsh/.zshrc @@ -0,0 +1,45 @@ +# Created by newuser for 5.8 + +autoload -Uz compinit promptinit + +# Completion +compinit +zstyle ':completion::complete:*' gain-privileges 1 +zstyle ':completion:*' menu select + +# Prompt +if [ "$TERM" != "linux" ]; then + fpath=(~/.config/zsh/ $fpath) + autoload -Uz knight + knight +else + PROMPT='%n @ %m %~ %# ' +fi; + +STATUS="Hallo" + +# Keybindings +bindkey -v + +# Aliases +alias ls='ls --color=auto' +alias la='ls -a --color=auto' +alias ll='ls -l --color=auto -h' +setopt COMPLETE_ALIASES + +# History +export HISTSIZE=1000 +export SAVEHIST=1000 +export HISTFILE=~/.zsh_history +setopt INC_APPEND_HISTORY +setopt HIST_IGNORE_DUPS + +# Syntax Highlight +source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh + +source ~/.profile + +# Auto CD +setopt AUTO_CD + +export HISTFILE="$XDG_CACHE_HOME"/zsh/history diff --git a/.config/zsh/knight b/.config/zsh/knight new file mode 100644 index 0000000..507212f --- /dev/null +++ b/.config/zsh/knight @@ -0,0 +1,17 @@ + +prompt_git_status() { + if [ -d ".git" ]; then + sign="\ue725"; + [[ -n $(git status -s) ]] && sign="\ufc1a"; + git_branch=$(git branch); + echo "%F{#547f62}%f%B%F{#191919}%K{#547f62} ${sign} ${git_branch##*\* } %f%k%b"; + fi; +} + +update_prompt() { + RPROMPT="$(prompt_git_status)" +} + +PROMPT="%B%F{#191919}%K{#547f62} %n %k%b%f%F{#547f62}%K{#191919}%f%k%F{#191919}%K{#547f62}%f%k%B%K{#547f62}%F{#191919} %m %b%k%f%F{#547f62}%K{#191919}%f%k%F{#191919}%K{#7698C4}%B %~ %b%f%k%F{#7698C4}%k%f " + +[[ -z $precmd_functions ]] && precmd_functions=() precmd_functions=($precmd_functions update_prompt) |