Made it working with stow

This commit is contained in:
2021-07-08 14:15:30 +02:00
parent ee1c963f54
commit fb116c6f4d
25 changed files with 0 additions and 0 deletions

145
all/.config/doom/config.el Normal file
View File

@@ -0,0 +1,145 @@
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
;; Place your private configuration here! Remember, you do not need to run 'doom
;; sync' after modifying this file!
;; Some functionality uses this to identify you, e.g. GPG configuration, email
;; clients, file templates and snippets.
(setq user-full-name "Julian Mutter"
user-mail-address "julian.mutter@comumail.de")
;; Doom exposes five (optional) variables for controlling fonts in Doom. Here
;; are the three important ones:
;;
;; + `doom-font'
;; + `doom-variable-pitch-font'
;; + `doom-big-font' -- used for `doom-big-font-mode'; use this for
;; presentations or streaming.
;;
;; They all accept either a font-spec, font string ("Input Mono-12"), or xlfd
;; font string. You generally only need these two:
;; (setq doom-font (font-spec :family "monospace" :size 13 :weight 'semi-light)
;; doom-variable-pitch-font (font-spec :family "sans" :size 13))
(setq doom-font (font-spec :family "Source Code Pro" :size 13))
;; There are two ways to load a theme. Both assume the theme is installed and
;; available. You can either set `doom-theme' or manually load a theme with the
;; `load-theme' function. This is the default:
(setq doom-theme 'doom-one)
;; If you use `org' and don't want your org files in the default location below,
;; change `org-directory'. It must be set before org loads!
(setq org-directory "~/org")
;; This determines the style of line numbers in effect. If set to `nil', line
;; numbers are disabled. For relative line numbers, set this to `relative'.
(setq display-line-numbers-type 'relative)
;; Here are some additional functions/macros that could help you configure Doom:
;;
;; - `load!' for loading external *.el files relative to this one
;; - `use-package!' for configuring packages
;; - `after!' for running code after a package has loaded
;; - `add-load-path!' for adding directories to the `load-path', relative to
;; this file. Emacs searches the `load-path' when you load packages with
;; `require' or `use-package'.
;; - `map!' for binding new keys
;;
;; To get information about any of these functions/macros, move the cursor over
;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k').
;; This will open documentation for it, including demos of how they are used.
;;
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
;; they are implemented.
;; Open external terminal
;; (map! :map doom-leader-open-map :desc "Open" "t" (cmd! (call-process-shell-command "terminal&" nil 0)))
(map! :leader :desc "Open external terminal" "o t" (cmd! (call-process-shell-command "terminal&" nil 0)))
;; Remap font scaling keybindings to make more sense
(map! :desc "Increase font size" :n "C-+" #'text-scale-increase)
(map! :desc "Decrease font size" :n "C--" #'text-scale-decrease)
(map! :desc "Reset font size" :n "C-=" #'doom/reset-font-size)
;; Org-mode custom keybindings
;; (map! :map org-mode-map :nvi "C-k" #'org-backward-element)
;; (map! :map org-mode-map :nvi "C-j" #'org-forward-element)
;; (map! :map org-mode-map :nvi "C-h" #'org-up-element)
;; (map! :map org-mode-map :nvi "C-l" #'org-down-element)
;; Spell checking settings
;; TODO make toggling of spell checking ('SPC t s') use flyspell-mode in text modes and flyspell-prog-mode in programming modes (see hooks below)
;; Removing hooks for automatic spell checking set here: https://github.com/hlissner/doom-emacs/blob/develop/modules/checkers/spell/config.el
(remove-hook! '(org-mode-hook
markdown-mode-hook
TeX-mode-hook
rst-mode-hook
mu4e-compose-mode-hook
message-mode-hook
git-commit-mode-hook)
#'flyspell-mode)
(remove-hook! '(yaml-mode-hook
conf-mode-hook
prog-mode-hook)
#'flyspell-prog-mode)
(setq ispell-dictionary "english")
(map! :map doom-leader-toggle-map :desc "Toggle dictionary" "d" #'fd-switch-dictionary)
(defun fd-switch-dictionary()
(interactive)
(let* ((dic ispell-current-dictionary)
(change (if (string= dic "german") "english" "german")))
(ispell-change-dictionary change)
(message "Dictionary switched from %s to %s" dic change)
))
;; (autoload 'matlab-mode "matlab" "Matlab Editing Mode" t)
;; (add-to-list
;; 'auto-mode-alist
;; '("\\.m$" . matlab-mode))
;; (setq matlab-indent-function t)
;; (setq matlab-shell-command "/urs/local/bin/matlab")
;; (setq org-agenda-files (list "~/org"))
;; (custom-set-variables
;; '(org-directory "~/org")
;; '(org-agenda-files (list org-directory)))
;; (add-to-list 'org-agenda-files "~/org/anothertest.org" 'append)
;; Adding my org-agenda files
(after! org
(setq org-agenda-files "org-agenda-files"))
(map! :map cdlatex-mode-map
:i "TAB" #'cdlatex-tab)
(map! :desc "Open external terminal" :nv "g C" #'toggle-word-case)
(defun toggle-word-case ()
"Toggle the case of current word or text selection."
(interactive)
(let (
(deactivate-mark nil)
$p1 $p2)
(if (use-region-p)
(setq $p1 (region-beginning) $p2 (region-end))
(save-excursion
(skip-chars-backward "[:alpha:]")
(setq $p1 (point))
(skip-chars-forward "[:alpha:]")
(setq $p2 (point))))
(let ((first-char-prop (get-char-code-property (char-after $p1) 'general-category)))
(cond ((string= "Ll" first-char-prop) ; Lower case
(upcase-region $p1 (+ $p1 1)))
((string= "Lu" first-char-prop) ; Upper case
(downcase-region $p1 (+ $p1 1)))
(t (message "Word does not start with a alphabetic character"))))))

View File

@@ -0,0 +1,13 @@
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(org-agenda-files '("~/org-tests.org"))
'(package-selected-packages '(matlab-mode)))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)

188
all/.config/doom/init.el Normal file
View File

@@ -0,0 +1,188 @@
;;; init.el -*- lexical-binding: t; -*-
;; This file controls what Doom modules are enabled and what order they load
;; in. Remember to run 'doom sync' after modifying it!
;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
;; documentation. There you'll find a "Module Index" link where you'll find
;; a comprehensive list of Doom's modules and what flags they support.
;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
;; 'C-c c k' for non-vim users) to view its documentation. This works on
;; flags as well (those symbols that start with a plus).
;;
;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its
;; directory (for easy access to its source code).
(doom! :input
;;chinese
;;japanese
;;layout ; auie,ctsrnm is the superior home row
:completion
company ; the ultimate code completion backend
;;helm ; the *other* search engine for love and life
;;ido ; the other *other* search engine...
ivy ; a search engine for love and life
:ui
;;deft ; notational velocity for Emacs
doom ; what makes DOOM look the way it does
doom-dashboard ; a nifty splash screen for Emacs
doom-quit ; DOOM quit-message prompts when you quit Emacs
;;(emoji +unicode) ; 🙂
;;fill-column ; a `fill-column' indicator
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
;;hydra
;;indent-guides ; highlighted indent columns
;;ligatures ; ligatures and symbols to make your code pretty again
;;minimap ; show a map of the code on the side
modeline ; snazzy, Atom-inspired modeline, plus API
;;nav-flash ; blink cursor line after big motions
neotree ; a project drawer, like NERDTree for vim
ophints ; highlight the region an operation acts on
(popup +defaults) ; tame sudden yet inevitable temporary windows
;;tabs ; a tab bar for Emacs
;; treemacs ; a project drawer, like neotree but cooler
;;unicode ; extended unicode support for various languages
vc-gutter ; vcs diff in the fringe
vi-tilde-fringe ; fringe tildes to mark beyond EOB
;;window-select ; visually switch windows
workspaces ; tab emulation, persistence & separate workspaces
;;zen ; distraction-free coding or writing
:editor
(evil +everywhere); come to the dark side, we have cookies
file-templates ; auto-snippets for empty files
fold ; (nigh) universal code folding
;;(format +onsave) ; automated prettiness
;;god ; run Emacs commands without modifier keys
;;lispy ; vim for lisp, for people who don't like vim
;;multiple-cursors ; editing in many places at once
;;objed ; text object editing for the innocent
;;parinfer ; turn lisp into python, sort of
;;rotate-text ; cycle region at point between text candidates
snippets ; my elves. They type so I don't have to
;;word-wrap ; soft wrapping with language-aware indent
:emacs
dired ; making dired pretty [functional]
electric ; smarter, keyword-based electric-indent
;;ibuffer ; interactive buffer management
undo ; persistent, smarter undo for your inevitable mistakes
vc ; version-control and Emacs, sitting in a tree
:term
;;eshell ; the elisp shell that works everywhere
;;shell ; simple shell REPL for Emacs
;;term ; basic terminal emulator for Emacs
;;vterm ; the best terminal emulation in Emacs
:checkers
syntax ; tasing you for every semicolon you forget
(spell +flyspell +everywhere) ; tasing you for misspelling mispelling
;;grammar ; tasing grammar mistake every you make
:tools
;;ansible
;;debugger ; FIXME stepping through code, to help you add bugs
;;direnv
;;docker
;;editorconfig ; let someone else argue about tabs vs spaces
;;ein ; tame Jupyter notebooks with emacs
(eval +overlay) ; run code, run (also, repls)
;;gist ; interacting with github gists
lookup ; navigate your code and its documentation
lsp
magit ; a git porcelain for Emacs
;;make ; run make tasks from Emacs
;;pass ; password manager for nerds
;;pdf ; pdf enhancements
;;prodigy ; FIXME managing external services & code builders
;;rgb ; creating color strings
;;taskrunner ; taskrunner for all your projects
;;terraform ; infrastructure as code
;;tmux ; an API for interacting with tmux
;;upload ; map local to remote projects via ssh/ftp
:os
(:if IS-MAC macos) ; improve compatibility with macOS
;;tty ; improve the terminal Emacs experience
:lang
;;agda ; types of types of types of types...
;;beancount ; mind the GAAP
(cc +lsp) ; C > C++ == 1
;;clojure ; java with a lisp
;;common-lisp ; if you've seen one lisp, you've seen them all
;;coq ; proofs-as-programs
;;crystal ; ruby at the speed of c
;;csharp ; unity, .NET, and mono shenanigans
;;data ; config/data formats
;;(dart +flutter) ; paint ui and not much else
;;elixir ; erlang done right
;;elm ; care for a cup of TEA?
emacs-lisp ; drown in parentheses
;;erlang ; an elegant language for a more civilized age
;;ess ; emacs speaks statistics
;;factor
;;faust ; dsp, but you get to keep your soul
;;fsharp ; ML stands for Microsoft's Language
;;fstar ; (dependent) types and (monadic) effects and Z3
;;gdscript ; the language you waited for
;;(go +lsp) ; the hipster dialect
;;(haskell +dante) ; a language that's lazier than I am
;;hy ; readability of scheme w/ speed of python
;;idris ; a language you can depend on
;;json ; At least it ain't XML
;;(java +meghanada) ; the poster child for carpal tunnel syndrome
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
;; julia ; a better, faster MATLAB
;;kotlin ; a better, slicker Java(Script)
(latex +cdlatex) ; writing papers in Emacs has never been so fun
;;lean ; for folks with too much to prove
;;ledger ; be audit you can be
;;lua ; one-based indices? one-based indices
markdown ; writing docs for people to ignore
;;nim ; python + lisp at the speed of c
;;nix ; I hereby declare "nix geht mehr!"
;;ocaml ; an objective camel
org ; organize your plain life in plain text
;;php ; perl's insecure younger brother
;;plantuml ; diagrams for confusing people more
;;purescript ; javascript, but functional
(python +lsp) ; beautiful is better than ugly
;;qt ; the 'cutest' gui framework ever
;;racket ; a DSL for DSLs
;;raku ; the artist formerly known as perl6
;;rest ; Emacs as a REST client
;;rst ; ReST in peace
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
rust ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
;;scala ; java, but good
;;(scheme +guile) ; a fully conniving family of lisps
sh ; she sells {ba,z,fi}sh shells on the C xor
;;sml
;;solidity ; do you need a blockchain? No.
;;swift ; who asked for emoji variables?
;;terra ; Earth and Moon in alignment for performance.
;;web ; the tubes
;;yaml ; JSON, but readable
;;zig ; C, but simpler
:email
;;(mu4e +gmail)
;;notmuch
;;(wanderlust +gmail)
:app
;;calendar
;;emms
;;everywhere ; *leave* Emacs!? You must be joking
;;irc ; how neckbeards socialize
;;(rss +org) ; emacs as an RSS reader
;;twitter ; twitter client https://twitter.com/vnought
:config
;;literate
(default +bindings +smartparens))

View File

@@ -0,0 +1,3 @@
/home/julian/Nextcloud/studium/vorlesungen/SS21/luftundraumfahrtlabor/lrl-fragenkatalog.org
/home/julian/Nextcloud/studium/vorlesungen/SS21/borddatenverarbeitung/bdv-fragenkatalog.org
/home/julian/Nextcloud/studium/vorlesungen/SS21/raumfahrtbetrieb/rb-vorbereitung.org

View File

@@ -0,0 +1,50 @@
;; -*- no-byte-compile: t; -*-
;;; $DOOMDIR/packages.el
;; To install a package with Doom you must declare them here and run 'doom sync'
;; on the command line, then restart Emacs for the changes to take effect -- or
;; use 'M-x doom/reload'.
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
;(package! some-package)
;; To install a package directly from a remote git repo, you must specify a
;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
;; https://github.com/raxod502/straight.el#the-recipe-format
;(package! another-package
; :recipe (:host github :repo "username/repo"))
;; If the package you are trying to install does not contain a PACKAGENAME.el
;; file, or is located in a subdirectory of the repo, you'll need to specify
;; `:files' in the `:recipe':
;(package! this-package
; :recipe (:host github :repo "username/repo"
; :files ("some-file.el" "src/lisp/*.el")))
;; If you'd like to disable a package included with Doom, you can do so here
;; with the `:disable' property:
;(package! builtin-package :disable t)
;; You can override the recipe of a built in package without having to specify
;; all the properties for `:recipe'. These will inherit the rest of its recipe
;; from Doom or MELPA/ELPA/Emacsmirror:
;(package! builtin-package :recipe (:nonrecursive t))
;(package! builtin-package-2 :recipe (:repo "myfork/package"))
;; Specify a `:branch' to install a package from a particular branch or tag.
;; This is required for some packages whose default branch isn't 'master' (which
;; our package manager can't deal with; see raxod502/straight.el#279)
;(package! builtin-package :recipe (:branch "develop"))
;; Use `:pin' to specify a particular commit to install.
;(package! builtin-package :pin "1a2b3c4d5e")
;; Doom's packages are pinned to a specific commit and updated from release to
;; release. The `unpin!' macro allows you to unpin single packages...
;(unpin! pinned-package)
;; ...or multiple packages
;(unpin! pinned-package another-pinned-package)
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
;(unpin! t)

431
all/.config/dunst/dunstrc Normal file
View File

@@ -0,0 +1,431 @@
[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 = keyboard #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-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 = 0
# 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 = "#aaaaaa"
# 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 = Monospace 12
# 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
# <https://developer.gnome.org/pango/stable/pango-Markup.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
# Vertical alignment of message text and icon.
# Possible values are "top", "center" and "bottom".
vertical_alignment = center
# 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 = left
# Scale small icons up to this size, set to 0 to disable. Helpful
# for e.g. small files or high-dpi screens. In case of conflict,
# max_icon_size takes precedence over this.
min_icon_size = 0
# 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
# 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
# Ignore the dbus closeNotification message.
# Useful to enforce the timeout set by dunst configuration. Without this
# parameter, an application may close the notification sent before the
# user defined timeout.
ignore_dbusclose = 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
### mouse
# Defines list of actions for each 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.
# These values can be strung together for each mouse event, and
# will be executed in sequence.
mouse_left_click = do_action, close_current
mouse_middle_click = do_action, close_current
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+period
# Close all notifications.
close_all = ctrl+shift+period
# 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+shift+space
# Context menu.
context = ctrl+space
[urgency_low]
# IMPORTANT: colors have to be defined in quotation marks.
# Otherwise the "#" and following would be interpreted as a comment.
background = "#222222"
foreground = "#888888"
timeout = 10
# Icon for notifications with low urgency, uncomment to enable
#icon = /path/to/icon
[urgency_normal]
background = "#285577"
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 (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

View File

@@ -0,0 +1 @@
scrot_dir=/home/julian/Pictures/screenshots

326
all/.config/i3/config Normal file
View File

@@ -0,0 +1,326 @@
# 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:monospace 12
# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
#font pango:DejaVu Sans Mono 12
# The combination of xss-lock, nm-applet and pactl is a popular choice, so
# they are included here as an example. Modify as you see fit.
# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
# 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
# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
# start a terminal
bindsym $mod+Return exec xfce4-terminal
# kill focused window
bindsym $mod+Shift+q kill
bindsym $mod+q kill
bindsym $mod+Shift+x kill
bindsym $mod+x kill
# for x button in laptop (produces alt+f4)
bindsym Mod1+F4 kill
# start dmenu (a program launcher)
bindsym $mod+d exec rofi -show run #dmenu_recency -i
# There also is the (new) i3-dmenu-desktop which only displays applications
# shipping a .desktop file. It is a wrapper around dmenu, so you need that
# installed.
# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
# change focus
bindsym $mod+h focus left
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+l 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+h move left
bindsym $mod+Shift+j move down
bindsym $mod+Shift+k move up
bindsym $mod+Shift+l 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+Shift+v split h
# split in vertical orientation
bindsym $mod+v split v
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+Shift+w layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# 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+Ctrl+1 move container to workspace number $ws1
bindsym $mod+Ctrl+2 move container to workspace number $ws2
bindsym $mod+Ctrl+3 move container to workspace number $ws3
bindsym $mod+Ctrl+4 move container to workspace number $ws4
bindsym $mod+Ctrl+5 move container to workspace number $ws5
bindsym $mod+Ctrl+6 move container to workspace number $ws6
bindsym $mod+Ctrl+7 move container to workspace number $ws7
bindsym $mod+Ctrl+8 move container to workspace number $ws8
bindsym $mod+Ctrl+9 move container to workspace number $ws9
bindsym $mod+Ctrl+0 move container to workspace number $ws10
# move focused container to workspace and follow
bindsym $mod+Shift+1 move container to workspace number $ws1; workspace $ws1
bindsym $mod+Shift+2 move container to workspace number $ws2; workspace $ws2
bindsym $mod+Shift+3 move container to workspace number $ws3; workspace $ws3
bindsym $mod+Shift+4 move container to workspace number $ws4; workspace $ws4
bindsym $mod+Shift+5 move container to workspace number $ws5; workspace $ws5
bindsym $mod+Shift+6 move container to workspace number $ws6; workspace $ws6
bindsym $mod+Shift+7 move container to workspace number $ws7; workspace $ws7
bindsym $mod+Shift+8 move container to workspace number $ws8; workspace $ws8
bindsym $mod+Shift+9 move container to workspace number $ws9; workspace $ws9
bindsym $mod+Shift+0 move container to workspace number $ws10; workspace $ws10
# Monitor config
set $monitor_left DVI-D-0
set $monitor_right DVI-D-1
workspace $ws1 output $monitor_left
workspace $ws2 output $monitor_left
workspace $ws3 output $monitor_left
workspace $ws4 output $monitor_left
workspace $ws5 output $monitor_left
workspace $ws6 output $monitor_right
workspace $ws7 output $monitor_right
workspace $ws8 output $monitor_right
workspace $ws9 output $monitor_right
workspace $ws10 output $monitor_right
# 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 "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
# 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 windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows height.
bindsym h resize shrink width 10 px or 10 ppt
bindsym j resize grow height 10 px or 10 ppt
bindsym k resize shrink height 10 px or 10 ppt
bindsym l 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"
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
status_command i3blocks
tray_output $monitor_left
position top
i3bar_command i3bar --transparency
}
set $mode_system System (l) lock, (e) logout, (r) reboot, (s) shutdown
mode "$mode_system" {
bindsym l exec --no-startup-id i3lock, mode "default"
bindsym e exec --no-startup-id i3exit logout, mode "default"
bindsym r exec --no-startup-id i3exit reboot, mode "default"
bindsym s exec --no-startup-id i3exit shutdown, mode "default"
# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+Shift+e mode "$mode_system"
set $mode_screenshot_file Screenshot to file (w) Active window, (s) Selection, (d) Desktop
mode "$mode_screenshot_file" {
bindsym w exec --no-startup-id "i3-scrot -w", mode "default"
bindsym --release s exec --no-startup-id "i3-scrot -s", mode "default"
bindsym d exec --no-startup-id "i3-scrot -d", mode "default"
bindsym --release Return exec --no-startup-id "i3-scrot -s", mode "default"
#back to normal: Escape
bindsym Escape mode "default"
}
bindsym $mod+Shift+Print mode "$mode_screenshot_file"
set $mode_screenshot_clipboard Screenshot to clipboard (w) Active window, (s) Selection, (d) Desktop
mode "$mode_screenshot_clipboard" {
bindsym w exec --no-startup-id "i3-scrot -wc", mode "default"
bindsym --release s exec --no-startup-id "i3-scrot -sc", mode "default"
bindsym d exec --no-startup-id "i3-scrot -dc", mode "default"
bindsym --release Return exec --no-startup-id "i3-scrot -sc", mode "default"
# back to normal: Escape
bindsym Escape mode "default"
}
bindsym $mod+Print mode "$mode_screenshot_clipboard"
bindsym $mod+Ctrl+Right move workspace to output right
bindsym $mod+Ctrl+Left move workspace to output right
bindsym $mod+c exec xfce4-terminal --role floating --hide-scrollbar --title Calculator -e qalc
bindsym $mod+p exec xwacomcalibrate
bindsym $mod+t exec thunar
bindsym $mod+m exec xfce4-terminal -x mc
bindsym $mod+Shift+c exec jupyter-calculator
bindsym $mod+b exec firefox
bindsym $mod+s exec pavucontrol
workspace_auto_back_and_forth yes
########## Window settings ##########
default_border normal
default_floating_border normal
assign [class="firefox" title="Mozilla Firefox$"] workspace $ws1
assign [class="TelegramDesktop"] workspace $ws9
assign [class="Signal"] workspace $ws9
assign [class="Rocket.Chat"] workspace $ws9
assign [class="Element"] workspace $ws9
assign [class="Thunderbird"] workspace $ws10
assign [class="zoom"] workspace $ws5
for_window [class="firefox"] focus
#for_window [class="Thunderbird"] focus
for_window [class="TelegramDesktop"] no_focus
for_window [class="Rocket.Chat"] no_focus
for_window [class="Element"] no_focus
#for_window [class="Thunderbird"] focus
for_window [title="Manjaro Settings Manager"] floating enable
for_window [class="Pamac-manager"] floating enable
for_window [class="Pamac-updater"] floating enable
#for_window [class="zoom" title="Chat"] floating enable
#for_window [class="Thunderbird" instance="Msgcompose"] floating enable
#
for_window [window_role=floating] floating enable
########## Autostart applications ##########
exec --no-startup-id "i3-msg 'workspace 9; append_layout ~/.config/i3/workspace-chat.json'"
exec firefox
exec thunderbird
exec chat.rocket.RocketChat no_focus
exec element-desktop no_focus
exec telegram-desktop no_focus
exec --no-startup-id nm-applet
exec --no-startup-id xfce4-power-manager
exec --no-startup-id nextcloud
# Authentication agent
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
# Notify about software updates
exec --no-startup-id pamac-tray
# Notify about kernel updates
exec --no-startup-id msm_notifier
# Audio
exec --no-startup-id start-pulseaudio-x11
# Background
#exec --no-startup-id feh --randomize --bg-fill /home/julian/Pictures/Hintergrundbilder/*
exec --no-startup-id feh --bg-fill /home/julian/Pictures/Hintergrundbilder/space.jpg
# Notifications
exec --no-startup-id dunst -config /home/julian/.config/dunst/dunstrc
# Default workspaces at startup (no need because autostart applications get always focused)
#exec --no-startup-id i3-msg workspace $ws1
exec --no-startup-id i3-msg workspace $ws10

View File

@@ -0,0 +1,71 @@
#!/bin/python3
import subprocess
import time
import psutil
NOTEBOOK_DIR = "/home/julian/jupyter-notebooks/"
PORT = "8988"
def isOtherProcessRunning():
process_count = 0
for proc in psutil.process_iter():
try:
pinfo = proc.as_dict(attrs=['pid', 'name', 'create_time'])
if "jupyter-calc" in pinfo['name'].lower():
process_count += 1
except (psutil.NoSuchProcess, psutil.AccessDenied , psutil.ZombieProcess) :
pass
return process_count > 1
def getNotebookPort(line):
url = line.split(" :: ")[0]
return url.split("localhost:")[1].split("/")[0]
def getNotebookToken(line):
url = line.split(" :: ")[0]
return url.split("token=")[1]
def isNotebookRunning():
answer = subprocess.check_output("jupyter notebook list", shell=True)
lines = answer.decode("utf-8").split("\n")
if lines[0] != "Currently running servers:":
raise Exception("Invalid jupyter status message")
for i in range(1, len(lines) -1):
if getNotebookPort(lines[i]) == PORT:
return getNotebookToken(lines[i])
return None
if __name__ == "__main__":
try:
if not isNotebookRunning():
subprocess.Popen(f"jupyter notebook --notebook-dir={NOTEBOOK_DIR} --port={PORT} --no-browser", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
max_wait_seconds = 3
delta_t_seconds = 0.1
current_wait_seconds = 0
token = ""
while True:
token = isNotebookRunning()
if token:
break
time.sleep(delta_t_seconds)
current_wait_seconds += delta_t_seconds
if current_wait_seconds >= max_wait_seconds:
raise Exception(f"Maximum wait time of {max_wait_seconds} exceeded!")
subprocess.call(f"cp {NOTEBOOK_DIR}calculator_template.ipynb {NOTEBOOK_DIR}calculator.ipynb", shell=True, stdout=None)
subprocess.call(f"electron 'http://localhost:{PORT}/notebooks/calculator.ipynb?token={token}'", shell=True, stdout=None)
finally:
# TODO: not reliably working
if not isOtherProcessRunning():
try:
subprocess.run(f"jupyter notebook stop {PORT}", shell=True)
except Exception:
pass

View File

@@ -0,0 +1,418 @@
# i3 config file (v4)
# Please see http://i3wm.org/docs/userguide.html for a complete reference!
# Set mod key (Mod1=<Alt>, Mod4=<Super>)
set $mod Mod4
# set default desktop layout (default is tiling)
# workspace_layout tabbed <stacking|tabbed>
# Configure border style <normal|1pixel|pixel xx|none|pixel>
default_border pixel 1
default_floating_border normal
# Hide borders
hide_edge_borders none
# change borders
bindsym $mod+u border none
bindsym $mod+y border pixel 1
bindsym $mod+n border normal
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font xft:URWGothic-Book 11
# Use Mouse+$mod to drag floating windows
floating_modifier $mod
# start a terminal
bindsym $mod+Return exec terminal
# kill focused window
bindsym $mod+Shift+q kill
# start program launcher
bindsym $mod+d exec --no-startup-id dmenu_recency
# launch categorized menu
bindsym $mod+z exec --no-startup-id morc_menu
################################################################################################
## sound-section - DO NOT EDIT if you wish to automatically upgrade Alsa -> Pulseaudio later! ##
################################################################################################
#exec --no-startup-id volumeicon
#bindsym $mod+Ctrl+m exec terminal -e 'alsamixer'
exec --no-startup-id pulseaudio
exec --no-startup-id pa-applet
bindsym $mod+Ctrl+m exec pavucontrol
################################################################################################
# Screen brightness controls
# bindsym XF86MonBrightnessUp exec "xbacklight -inc 10; notify-send 'brightness up'"
# bindsym XF86MonBrightnessDown exec "xbacklight -dec 10; notify-send 'brightness down'"
# Start Applications
bindsym $mod+Ctrl+b exec terminal -e 'bmenu'
bindsym $mod+F2 exec palemoon
bindsym $mod+F3 exec pcmanfm
# bindsym $mod+F3 exec ranger
bindsym $mod+Shift+F3 exec pcmanfm_pkexec
bindsym $mod+F5 exec terminal -e 'mocp'
bindsym $mod+t exec --no-startup-id pkill picom
bindsym $mod+Ctrl+t exec --no-startup-id picom -b
bindsym $mod+Shift+d --release exec "killall dunst; exec notify-send 'restart dunst'"
bindsym Print exec --no-startup-id i3-scrot
bindsym $mod+Print --release exec --no-startup-id i3-scrot -w
bindsym $mod+Shift+Print --release exec --no-startup-id i3-scrot -s
bindsym $mod+Shift+h exec xdg-open /usr/share/doc/manjaro/i3_help.pdf
bindsym $mod+Ctrl+x --release exec --no-startup-id xkill
# focus_follows_mouse no
# 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
# workspace back and forth (with/without active container)
workspace_auto_back_and_forth yes
bindsym $mod+b workspace back_and_forth
bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth
# split orientation
bindsym $mod+h split h;exec notify-send 'tile horizontally'
bindsym $mod+v split v;exec notify-send 'tile vertically'
bindsym $mod+q split toggle
# toggle fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
# 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
# toggle sticky
bindsym $mod+Shift+s sticky toggle
# focus the parent container
bindsym $mod+a focus parent
# 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
#navigate workspaces next / previous
bindsym $mod+Ctrl+Right workspace next
bindsym $mod+Ctrl+Left workspace prev
# Workspace names
# to display names or symbols instead of plain workspace numbers you can use
# something like: set $ws1 1:mail
# set $ws2 2:
set $ws1 1
set $ws2 2
set $ws3 3
set $ws4 4
set $ws5 5
set $ws6 6
set $ws7 7
set $ws8 8
# switch to workspace
bindsym $mod+1 workspace $ws1
bindsym $mod+2 workspace $ws2
bindsym $mod+3 workspace $ws3
bindsym $mod+4 workspace $ws4
bindsym $mod+5 workspace $ws5
bindsym $mod+6 workspace $ws6
bindsym $mod+7 workspace $ws7
bindsym $mod+8 workspace $ws8
# Move focused container to workspace
bindsym $mod+Ctrl+1 move container to workspace $ws1
bindsym $mod+Ctrl+2 move container to workspace $ws2
bindsym $mod+Ctrl+3 move container to workspace $ws3
bindsym $mod+Ctrl+4 move container to workspace $ws4
bindsym $mod+Ctrl+5 move container to workspace $ws5
bindsym $mod+Ctrl+6 move container to workspace $ws6
bindsym $mod+Ctrl+7 move container to workspace $ws7
bindsym $mod+Ctrl+8 move container to workspace $ws8
# Move to workspace with focused container
bindsym $mod+Shift+1 move container to workspace $ws1; workspace $ws1
bindsym $mod+Shift+2 move container to workspace $ws2; workspace $ws2
bindsym $mod+Shift+3 move container to workspace $ws3; workspace $ws3
bindsym $mod+Shift+4 move container to workspace $ws4; workspace $ws4
bindsym $mod+Shift+5 move container to workspace $ws5; workspace $ws5
bindsym $mod+Shift+6 move container to workspace $ws6; workspace $ws6
bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7
bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8
# Open applications on specific workspaces
# assign [class="Thunderbird"] $ws1
# assign [class="Pale moon"] $ws2
# assign [class="Pcmanfm"] $ws3
# assign [class="Skype"] $ws5
# Open specific applications in floating mode
for_window [title="alsamixer"] floating enable border pixel 1
for_window [class="calamares"] floating enable border normal
for_window [class="Clipgrab"] floating enable
for_window [title="File Transfer*"] floating enable
for_window [class="fpakman"] floating enable
for_window [class="Galculator"] floating enable border pixel 1
for_window [class="GParted"] floating enable border normal
for_window [title="i3_help"] floating enable sticky enable border normal
for_window [class="Lightdm-settings"] floating enable
for_window [class="Lxappearance"] floating enable sticky enable border normal
for_window [class="Manjaro-hello"] floating enable
for_window [class="Manjaro Settings Manager"] floating enable border normal
for_window [title="MuseScore: Play Panel"] floating enable
for_window [class="Nitrogen"] floating enable sticky enable border normal
for_window [class="Oblogout"] fullscreen enable
for_window [class="octopi"] floating enable
for_window [title="About Pale Moon"] floating enable
for_window [class="Pamac-manager"] floating enable
for_window [class="Pavucontrol"] floating enable
for_window [class="qt5ct"] floating enable sticky enable border normal
for_window [class="Qtconfig-qt4"] floating enable sticky enable border normal
for_window [class="Simple-scan"] floating enable border normal
for_window [class="(?i)System-config-printer.py"] floating enable border normal
for_window [class="Skype"] floating enable border normal
for_window [class="Timeset-gui"] floating enable border normal
for_window [class="(?i)virtualbox"] floating enable border normal
for_window [class="Xfburn"] floating enable
# switch to workspace with urgent window automatically
for_window [urgent=latest] focus
# 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 "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
# Set shut down, restart and locking features
bindsym $mod+0 mode "$mode_system"
set $mode_system (l)ock, (e)xit, switch_(u)ser, (s)uspend, (h)ibernate, (r)eboot, (Shift+s)hutdown
mode "$mode_system" {
bindsym l exec --no-startup-id i3exit lock, mode "default"
bindsym s exec --no-startup-id i3exit suspend, mode "default"
bindsym u exec --no-startup-id i3exit switch_user, mode "default"
bindsym e exec --no-startup-id i3exit logout, mode "default"
bindsym h exec --no-startup-id i3exit hibernate, mode "default"
bindsym r exec --no-startup-id i3exit reboot, mode "default"
bindsym Shift+s exec --no-startup-id i3exit shutdown, mode "default"
# exit system mode: "Enter" or "Escape"
bindsym Return mode "default"
bindsym Escape mode "default"
}
# Resize window (you can also use the mouse for that)
bindsym $mod+r mode "resize"
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
# Pressing left will shrink the windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows height.
bindsym j resize shrink width 5 px or 5 ppt
bindsym k resize grow height 5 px or 5 ppt
bindsym l resize shrink height 5 px or 5 ppt
bindsym semicolon resize grow width 5 px or 5 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
# exit resize mode: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
}
# Lock screen
bindsym $mod+9 exec --no-startup-id blurlock
# Autostart applications
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec --no-startup-id nitrogen --restore; sleep 1; picom -b
exec --no-startup-id manjaro-hello
exec --no-startup-id nm-applet
exec --no-startup-id xfce4-power-manager
exec --no-startup-id pamac-tray
exec --no-startup-id clipit
# exec --no-startup-id blueman-applet
# exec_always --no-startup-id sbxkb
exec --no-startup-id start_conky_maia
# exec --no-startup-id start_conky_green
exec --no-startup-id xautolock -time 10 -locker blurlock
exec_always --no-startup-id ff-theme-util
exec_always --no-startup-id fix_xcursor
# Color palette used for the terminal ( ~/.Xresources file )
# Colors are gathered based on the documentation:
# https://i3wm.org/docs/userguide.html#xresources
# Change the variable name at the place you want to match the color
# of your terminal like this:
# [example]
# If you want your bar to have the same background color as your
# terminal background change the line 362 from:
# background #14191D
# to:
# background $term_background
# Same logic applied to everything else.
set_from_resource $term_background background
set_from_resource $term_foreground foreground
set_from_resource $term_color0 color0
set_from_resource $term_color1 color1
set_from_resource $term_color2 color2
set_from_resource $term_color3 color3
set_from_resource $term_color4 color4
set_from_resource $term_color5 color5
set_from_resource $term_color6 color6
set_from_resource $term_color7 color7
set_from_resource $term_color8 color8
set_from_resource $term_color9 color9
set_from_resource $term_color10 color10
set_from_resource $term_color11 color11
set_from_resource $term_color12 color12
set_from_resource $term_color13 color13
set_from_resource $term_color14 color14
set_from_resource $term_color15 color15
# Start i3bar to display a workspace bar (plus the system information i3status if available)
bar {
i3bar_command i3bar
status_command i3status
position bottom
## please set your primary output first. Example: 'xrandr --output eDP1 --primary'
# tray_output primary
# tray_output eDP1
bindsym button4 nop
bindsym button5 nop
# font xft:URWGothic-Book 11
strip_workspace_numbers yes
colors {
background #222D31
statusline #F9FAF9
separator #454947
# border backgr. text
focused_workspace #F9FAF9 #16a085 #292F34
active_workspace #595B5B #353836 #FDF6E3
inactive_workspace #595B5B #222D31 #EEE8D5
binding_mode #16a085 #2C2C2C #F9FAF9
urgent_workspace #16a085 #FDF6E3 #E5201D
}
}
# hide/unhide i3status bar
bindsym $mod+m bar mode toggle
# Theme colors
# class border backgr. text indic. child_border
client.focused #556064 #556064 #80FFF9 #FDF6E3
client.focused_inactive #2F3D44 #2F3D44 #1ABC9C #454948
client.unfocused #2F3D44 #2F3D44 #1ABC9C #454948
client.urgent #CB4B16 #FDF6E3 #1ABC9C #268BD2
client.placeholder #000000 #0c0c0c #ffffff #000000
client.background #2B2C2B
#############################
### settings for i3-gaps: ###
#############################
# Set inner/outer gaps
gaps inner 14
gaps outer -2
# Additionally, you can issue commands with the following syntax. This is useful to bind keys to changing the gap size.
# gaps inner|outer current|all set|plus|minus <px>
# gaps inner all set 10
# gaps outer all plus 5
# Smart gaps (gaps used if only more than one container on the workspace)
smart_gaps on
# Smart borders (draw borders around container only if it is not the only container on this workspace)
# on|no_gaps (on=always activate and no_gaps=only activate if the gap size to the edge of the screen is 0)
smart_borders on
# Press $mod+Shift+g to enter the gap mode. Choose o or i for modifying outer/inner gaps. Press one of + / - (in-/decrement for current workspace) or 0 (remove gaps for current workspace). If you also press Shift with these keys, the change will be global for all workspaces.
set $mode_gaps Gaps: (o) outer, (i) inner
set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global)
bindsym $mod+Shift+g mode "$mode_gaps"
mode "$mode_gaps" {
bindsym o mode "$mode_gaps_outer"
bindsym i mode "$mode_gaps_inner"
bindsym Return mode "default"
bindsym Escape mode "default"
}
mode "$mode_gaps_inner" {
bindsym plus gaps inner current plus 5
bindsym minus gaps inner current minus 5
bindsym 0 gaps inner current set 0
bindsym Shift+plus gaps inner all plus 5
bindsym Shift+minus gaps inner all minus 5
bindsym Shift+0 gaps inner all set 0
bindsym Return mode "default"
bindsym Escape mode "default"
}
mode "$mode_gaps_outer" {
bindsym plus gaps outer current plus 5
bindsym minus gaps outer current minus 5
bindsym 0 gaps outer current set 0
bindsym Shift+plus gaps outer all plus 5
bindsym Shift+minus gaps outer all minus 5
bindsym Shift+0 gaps outer all set 0
bindsym Return mode "default"
bindsym Escape mode "default"
}

4
all/.config/i3/rofi_calc Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/bash
LC_NUMERIC=en_US.utf8
rofi -show calc -modi calc -no-show-match -no-sort -terse -calc-command "echo -n '{result}' | xclip"

6
all/.config/i3/setupZoom Executable file
View File

@@ -0,0 +1,6 @@
#!/bin/bash
zoom &
i3-msg "workspace --no-auto-back-and-forth 5; exec mousepad /home/julian/Nextcloud/studium/zoom.txt"
i3-msg "workspace --no-auto-back-and-forth 5; append_layout ~/.config/i3/workspace-zoom.json"

View File

@@ -0,0 +1,104 @@
// vim:ts=4:sw=4:et
{
"border": "none",
"current_border_width": 2,
"floating": "auto_off",
"geometry": {
"height": 1026,
"width": 560,
"x": 1680,
"y": 24
},
"marks": [],
"name": "Telegram",
"percent": 0.5,
"swallows": [
{
"class": "^TelegramDesktop$",
"instance": "^telegram\\-desktop$"
// "title": "^Telegram\\ \\(18\\)$"
}
],
"type": "con"
}
{
// splitv split container with 2 children
"border": "normal",
"floating": "auto_off",
"layout": "splitv",
"marks": [],
"percent": 0.5,
"type": "con",
"nodes": [
{
// splith split container with 1 children
"border": "normal",
"floating": "auto_off",
"layout": "splith",
"marks": [],
"percent": 0.5,
"type": "con",
"nodes": [
{
// splith split container with 1 children
"border": "normal",
"floating": "auto_off",
"layout": "splith",
"marks": [],
"percent": 1,
"type": "con",
"nodes": [
{
"border": "normal",
"current_border_width": 2,
"floating": "auto_off",
"geometry": {
"height": 1002,
"width": 800,
"x": 2242,
"y": 46
},
"marks": [],
"name": "Element",
"percent": 1,
"swallows": [
{
"class": "^Element$",
"instance": "^element$"
// "title": "^Element\\ \\|\\ Skipper$",
// "window_role": "^browser\\-window$"
}
],
"type": "con"
}
]
}
]
},
{
"border": "normal",
"current_border_width": 2,
"floating": "auto_off",
"geometry": {
"height": 715,
"width": 1366,
"x": 183,
"y": 396
},
"marks": [],
"name": "Rocket Chat",
"percent": 0.5,
"swallows": [
{
"class": "^Rocket\\.Chat$",
"instance": "^rocket\\.chat$"
// "title": "^Chat\\ der\\ Uni\\ Würzburg$",
// "window_role": "^browser\\-window$"
}
],
"type": "con"
}
]
}

View File

@@ -0,0 +1,86 @@
// vim:ts=4:sw=4:et
{
"border": "normal",
"current_border_width": 2,
"floating": "auto_off",
"geometry": {
"height": 800,
"width": 1188,
"x": 246,
"y": 125
},
"name": "Zoom Meeting",
"percent": 0.8,
"swallows": [
{
"class": "^zoom$",
"instance": "^zoom$",
"title": "^Zoom\\ Meeting$"
}
],
"type": "con"
}
{
// splitv split container with 2 children
"border": "normal",
"floating": "auto_off",
"layout": "splitv",
"percent": 0.2,
"type": "con",
"nodes": [
{
// splith split container with 1 children
"border": "normal",
"floating": "auto_off",
"layout": "splith",
"percent": 0.5,
"type": "con",
"nodes": [
{
"border": "normal",
"current_border_width": 2,
"floating": "auto_off",
"geometry": {
"height": 1002,
"width": 220,
"x": 1458,
"y": 46
},
"name": "Participants",
"percent": 1,
"swallows": [
{
"class": "^zoom$",
"instance": "^zoom$",
"title": "^Participants"
}
],
"type": "con"
}
]
},
{
"border": "normal",
"current_border_width": 2,
"floating": "user_off",
"geometry": {
"height": 350,
"width": 355,
"x": 662,
"y": 350
},
"name": "Chat",
"percent": 0.5,
"swallows": [
{
"class": "^zoom$",
"instance": "^zoom$",
"title": "^Chat$"
}
],
"type": "con"
}
]
}

30
all/.config/i3blocks/activity Executable file
View File

@@ -0,0 +1,30 @@
#!/bin/sh
NONE="None"
get_current_activity() {
activity=$(hamster current)
if [ "$activity" = "No activity" ]; then
echo $NONE
else
IFS=' '
read -ra ADDR <<< "$activity"
echo "${ADDR[2]}"
fi
}
case "$BLOCK_BUTTON" in
1|2|3)
current_activity=$(get_current_activity)
if [ "$current_activity" = "$NONE" ]; then
hamster start "Comu@Work#Flexibill App"
else
hamster stop
fi
esac
current_activity=$(get_current_activity)
echo "$LABEL $current_activity"
echo "$LABEL $current_activity"

793
all/.config/i3blocks/battery-plus Executable file
View File

@@ -0,0 +1,793 @@
#!/usr/bin/env bash
#
# battery-plus
#
# An enhanced battery status indicator for i3blocks.
#
# Requires:
# awk (POSIX compatible)
# bc
# upower
#
# Recommended:
# fonts-font-awesome or fonts-hack
#
# Optional:
# notify-send or dunstify -- for notifications
# zenity -- for dialogs
#
# Copyright (c) 2018 Beau Hastings. All rights reserved.
# License: GNU General Public License v2
#
# Author: Beau Hastings <beau@saweet.net>
# URL: https://github.com/hastinbe/i3blocks-battery-plus
_PERCENT="&#x25;"
# Hide the battery status if fully-charged,
_HIDE_IF_CHARGED=${_HIDE_IF_CHARGED:-false}
# Color the battery symbol using gradient.
_USE_BATT_GRADIENT=${_USE_BATT_GRADIENT:-false}
# Only show symbols.
_SYMBOLS_ONLY=${_SYMBOLS_ONLY:-false}
# Hide the battery percentage
_HIDE_PERCENTAGE=${_HIDE_PERCENTAGE:-false}
# Hide the battery time remaining
_HIDE_TIME_REMAINING=${_HIDE_TIME_REMAINING:-true}
# Hide the time to charge the battery to full
_HIDE_TIME_TO_FULL=${_HIDE_TIME_TO_FULL:-true}
# Show the direction of change for the battery's percentage
_SHOW_CHARGE_DIRECTION=${_SHOW_CHARGE_DIRECTION:-true}
# Show an alert symbol when the battery capacity drops to the given percent (0=disable).
_CAPACITY_ALERT=${_CAPACITY_ALERT:-75}
# Action to take when the battery level reaches critical.
_CRITICAL_ACTION=${_CRITICAL_ACTION:-"notify"}
# Action to take when the battery level reaches low.
_LOW_ACTION=${_LOW_ACTION:-"notify"}
# Method to use for notifications
_NOTIFY_PROGRAM=${_NOTIFY_PROGRAM:-"notify-send"}
# The duration, in milliseconds, for the notification to appear on screen.
_NOTIFY_EXPIRES="1500"
# Minimum time in seconds between notifications to prevent spam.
_NOTIFY_THROTTLE=${_NOTIFY_THROTTLE:-120}
# Colors
_COLOR_FULLY_CHARGED=${_COLOR_FULLY_CHARGED:-""}
_COLOR_CHARGING=${_COLOR_CHARGING:-"yellow"}
_COLOR_DISCHARGING=${_COLOR_CHARGING:-"yellow"}
_COLOR_PENDING=${_COLOR_PENDING:-"blue"}
_COLOR_ERROR=${_COLOR_ERROR:-"red"}
_COLOR_BATTERY=${_COLOR_BATTERY:-"white"}
_COLOR_ALERT=${_COLOR_ALERT:-"orange"}
_COLOR_DIRECTIONAL_UP=${_COLOR_DIRECTIONAL_UP:-"green"}
_COLOR_DIRECTIONAL_DOWN=${_COLOR_DIRECTIONAL_DOWN:-"red"}
_COLOR_GRADIENT_START=${_COLOR_GRADIENT_START:-"#FF0000"}
_COLOR_GRADIENT_END=${_COLOR_GRADIENT_END:-"#00FF00"}
# Symbols
_SYMBOL_FULLY_CHARGED=${_SYMBOL_FULLY_CHARGED:-""}
_SYMBOL_CHARGING=${_SYMBOL_CHARGING:-"&#xf0e7;"}
_SYMBOL_DISCHARGING=${_SYMBOL_DISCHARGING:-""}
_SYMBOL_UNKNOWN=${_SYMBOL_UNKNOWN:-"&#xf128;"}
_SYMBOL_PENDING=${_SYMBOL_PENDING:-"&#xf254;"}
_SYMBOL_ERROR=${_SYMBOL_ERROR:-"&#xf00d;"}
_SYMBOL_ALERT=${_SYMBOL_ALERT:-"&#xf071;"}
_SYMBOL_BATT_100=${_SYMBOL_BATT_100:-"&#xf240;"}
_SYMBOL_BATT_75=${_SYMBOL_BATT_75:-"&#xf241;"}
_SYMBOL_BATT_50=${_SYMBOL_BATT_50:-"&#xf242;"}
_SYMBOL_BATT_25=${_SYMBOL_BATT_25:-"&#xf243;"}
_SYMBOL_BATT_0=${_SYMBOL_BATT_0:-"&#xf244;"}
_SYMBOL_DIRECTION_UP=${_SYMBOL_DIRECTION_UP:-"&#8593;"}
_SYMBOL_DIRECTION_DOWN=${_SYMBOL_DIRECTION_DOWN:-"&#8595;"}
# Get a the system's temporary files directory.
#
# Notes:
# Executes a dry-run so we don't create a file.
# Linux doesn't require the template option, but MacOSX does.
#
# Returns:
# The path to the temporary directory.
get_temp_dir() {
echo $(dirname $(mktemp -ut "battery-plus.XXX"))
}
# Output text wrapped in a span element
#
# Options:
# -c <color> To specify a text color
#
# Arguments:
# $1 or $3 - String to encapsulate within a span
span() {
local -A attribs
local text="$*"
if [ -n "$FONT" ]; then attribs[font]="$FONT"; fi
if [ "$1" = "-c" ]; then
attribs[color]="$2"
text="${*:3}"
fi
echo "<span$(build_attribs attribs)>$text</span>"
}
# Builds html element attributes
#
# Arguments:
# $1 - An associative array of attribute-value pairs
build_attribs() {
local -n array=$1
for k in "${!array[@]}"; do
echo -n " $k='${array[$k]}'"
done
echo
}
# Interpolate between 2 RGB colors
#
# Arguments:
# $1 - Color to interpolate from, as a hex triplet prefixed with #
# $2 - Color to interpolate to, as a hex triplet prefixed with #
# $3 - Amount of steps needed to get from start to end color
interpolate_rgb() {
local -i steps=$3
local -a colors
local color1=$1
local color2=$2
local reversed=false
if (( 0x${color1:1:5} > 0x${color2:1:5} )); then
color1=$2
color2=$1
reversed=true
fi
printf -v startR "%d" 0x${color1:1:2}
printf -v startG "%d" 0x${color1:3:2}
printf -v startB "%d" 0x${color1:5:2}
printf -v endR "%d" 0x${color2:1:2}
printf -v endG "%d" 0x${color2:3:2}
printf -v endB "%d" 0x${color2:5:2}
stepR=$(( ($endR - $startR) / $steps ))
stepG=$(( ($endG - $startG) / $steps ))
stepB=$(( ($endB - $startB) / $steps ))
for i in $(seq 0 $steps); do
local -i R=$(( $startR + ($stepR * $i) ))
local -i G=$(( $startG + ($stepG * $i) ))
local -i B=$(( $startB + ($stepB * $i) ))
colors+=( "$(printf "#%02x%02x%02x\n" $R $G $B)" )
done
colors+=( "$(printf "#%02x%02x%02x\n" $endR $endG $endB)" )
if $reversed; then
reverse colors colors_reversed
echo "${colors_reversed[@]}"
else
echo "${colors[@]}"
fi
}
# Reverse an array
#
# Arguments:
# $1 - Array to reverse
# $2 - Destination array
reverse() {
local -n arr="$1" rev="$2"
for i in "${arr[@]}"
do
rev=("$i" "${rev[@]}")
done
}
min() {
echo "if ($1 < $2) $1 else $2" | bc
}
max() {
echo "if ($1 > $2) $1 else $2" | bc
}
clamp() {
echo $(min $(max $1 $2) $3)
}
# Retrieve an item from the provided lookup table based on the percentage of a number
#
# Arguments:
# $1 - A number
# $2 - Number to get a percentage of
# $3 - An array of potential values
plookup() {
if [ -z "$2" -o -z "$3" ]; then
return
fi
local table=( ${@:3} )
local number2=${2%.*}
local number1=$(min ${1%.*} $number2)
local percent_max=$(( $number1 * $number2 / 100 ))
local index=$(( $percent_max * ${#table[@]} / 100 ))
index=$(clamp $index 0 $(( ${#table[@]} - 1 )) )
echo ${table[$index]}
}
# Get battery status.
#
# Returns:
# The battery's status or state.
get_battery_status() {
echo "$__UPOWER_INFO" | awk -W posix '$1 == "state:" {print $2}'
}
# Get battery warning level.
#
# Returns:
# The battery's warning level.
get_battery_warning_level() {
echo "$__UPOWER_INFO" | awk -W posix '$1 == "warning-level:" {print $2}'
}
# Get battery percentage.
#
# Returns:
# The battery's percentage, without the %.
get_battery_percent() {
echo "$__UPOWER_INFO" | awk -W posix '$1 == "percentage:" { gsub("%","",$2); print $2}'
}
# Get battery capacity.
#
# Returns:
# The battery's capcity, without the %.
get_battery_capacity() {
echo "$__UPOWER_INFO" | awk -W posix '$1 == "capacity:" { gsub("%","",$2); print $2}'
}
# Get battery time left.
#
# Returns:
# The battery's time left.
get_time_to_empty() {
echo "$__UPOWER_INFO" | awk -W posix -F':' '/time to empty:/{print $2}' | xargs
}
# Get the time remaining until the battery is fully charged.
#
# Returns:
# The time remaining until battery is fully charged.
get_time_to_full() {
echo "$__UPOWER_INFO" | awk -W posix -F':' '/time to full:/{print $2}' | xargs
}
# Get symbol for the given battery percentage.
#
# Arguments:
# $percent (int) Battery percentage.
#
# Returns:
# The battery symbol.
get_battery_charge_symbol() {
local percent="$1"
local symbol
if [ "$battery_percentage" -ge 90 ]; then symbol="$_SYMBOL_BATT_100"
elif [ "$battery_percentage" -ge 70 ]; then symbol="$_SYMBOL_BATT_75"
elif [ "$battery_percentage" -ge 40 ]; then symbol="$_SYMBOL_BATT_50"
elif [ "$battery_percentage" -ge 20 ]; then symbol="$_SYMBOL_BATT_25"
else symbol="$_SYMBOL_BATT_0"
fi
echo "$symbol"
}
# Get battery status symbol.
#
# Returns:
# An symbol name, following the Symbol Naming Specification
get_battery_status_symbol() {
echo "$__UPOWER_INFO" | awk -W posix '$1 == "symbol-name:" {print $2}'
}
# Get color for the given battery percentage.
#
# Arguments:
# $percent (int) Battery percentage.
#
# Returns:
# The color to use for the given battery percentage.
get_percentage_color() {
local colors=( $(interpolate_rgb "$_COLOR_GRADIENT_START" "$_COLOR_GRADIENT_END" 8) )
echo $(plookup $1 100 ${colors[@]})
}
# Determines whether or not we can send a notification.
#
# Returns:
# 0 on false, 1 on true.
can_notify() {
local -i now=$(date +"%s")
local -i last=$(get_last_notify_time)
if [ -z "$last" ]; then return 0; fi
local -i diff=$(($now - $last))
[ $diff -gt $_NOTIFY_THROTTLE ]
}
# Get the last time we sent a notification.
#
# Returns:
# Time in seconds since the Epoch.
get_last_notify_time() {
if [ -f "$TMP_NOTIFY" ]; then
echo $(stat -c '%Y' "$TMP_NOTIFY")
fi
}
# Save the last time we sent a notification.
save_last_notify_time() {
touch -m "$TMP_NOTIFY"
}
# Display the charging indicator.
#
# Returns:
# The charging indicator.
display_batt_charging() {
if [ -n "$_SYMBOL_CHARGING" ]; then
echo -n "$(span -c "${_COLOR_CHARGING}" "$_SYMBOL_CHARGING") "
fi
echo "$colored_battery_symbol"
}
# Display the discharging indicator.
#
# Returns:
# The discharging indicator.
display_batt_discharging() {
if [ -n "$_SYMBOL_DISCHARGING" ]; then
echo -n "$(span -c "${_COLOR_DISCHARGING}" "$_SYMBOL_DISCHARGING") "
fi
echo "$battery_charge_symbol"
}
# Display the pending charge indicator.
#
# Returns:
# The pending charge indicator.
display_batt_pending_charge() {
if [ -n "$_SYMBOL_PENDING" ]; then
echo -n "$(span -c "${_COLOR_PENDING}" "$_SYMBOL_PENDING") "
fi
if [ -n "$_SYMBOL_CHARGING" ]; then
echo -n "$(span -c "${_COLOR_CHARGING}" "$_SYMBOL_CHARGING") "
fi
echo "${battery_charge_symbol}"
}
# Display the pending discharge indicator.
#
# Returns:
# The pending discharge indicator.
display_batt_pending_discharge() {
if [ -n "$_SYMBOL_PENDING" ]; then
echo -n "$(span -c "${_COLOR_PENDING}" "$_SYMBOL_PENDING") "
fi
if [ -n "$_SYMBOL_DISCHARGING" ]; then
echo -n "$(span -c "${_COLOR_DISCHARGING}" "$_SYMBOL_DISCHARGING") "
fi
echo "$colored_battery_symbol"
}
# Display the empty battery indicator.
#
# Returns:
# The empty battery indicator.
display_batt_empty() {
echo "$battery_charge_symbol"
}
# Display the fully charged indicator.
#
# Returns:
# The fully-charged indicator.
display_batt_fully_charged() {
if [ -n "$_SYMBOL_FULLY_CHARGED" ]; then
echo -n "$(span -c "${_COLOR_FULLY_CHARGED}" "$_SYMBOL_FULLY_CHARGED") "
fi
echo "$battery_charge_symbol"
}
# Display the unknown battery indicator.
#
# Returns:
# The unknonw battery indicator.
display_batt_unknown() {
if [ -n "$_SYMBOL_UNKNOWN" ]; then
echo -n "$(span "$_SYMBOL_UNKNOWN") "
fi
echo "$(get_battery_charge_symbol 0)"
}
# Display the battery error indicator.
#
# Returns:
# The battery error indicator.
display_batt_error() {
echo "$(span -c "${_COLOR_ERROR}" "$_SYMBOL_ERROR" "$_SYMBOL_BATT_0")"
}
# Display the battery percentage.
#
# Returns:
# The battery percentage, or nothing if disabled.
display_percentage() {
if ! [ $_SYMBOLS_ONLY = true -o $_HIDE_PERCENTAGE = true ]; then
echo -n " $(span -c "${percentage_color}" "${battery_percentage:---}${_PERCENT}")"
if [ "$status" = "charging" ] && $_SHOW_CHARGE_DIRECTION; then
echo -n "$(span -c "${_COLOR_DIRECTIONAL_UP}" "${_SYMBOL_DIRECTION_UP}")"
elif [ "$status" = "discharging" ] && $_SHOW_CHARGE_DIRECTION; then
echo -n "$(span -c "${_COLOR_DIRECTIONAL_DOWN}" "${_SYMBOL_DIRECTION_DOWN}")"
fi
echo
fi
}
# Display the battery time remaining.
#
# Arguments:
# $force (bool) Force display.
#
# Returns:
# The time remaining, or nothing if disabled.
display_time_remaining() {
local force=${1:-false}
if [ $force = true ] || ! [ $_SYMBOLS_ONLY = true -o $_HIDE_TIME_REMAINING = true ]; then
time_to_empty=$(get_time_to_empty "$battery_info")
if [ -n "$time_to_empty" ]; then
echo "$time_to_empty"
fi
fi
}
# Display the battery time to fully charge.
#
# Arguments:
# $force (bool) Force display.
#
# Returns:
# The time to fully charge, or nothing if disabled.
display_time_to_full() {
local force=${1:-false}
if [ $force = true ] || ! [ $_SYMBOLS_ONLY = true -o $_HIDE_TIME_TO_FULL = true ]; then
time_to_full=$(get_time_to_full "$battery_info")
if [ -n "$time_to_full" ]; then
echo "$time_to_full"
fi
fi
}
# Displays an array of segments.
#
# Arguments:
# $segments (array) The an array of segments.
#
# Returns:
# Each segment after another, followed by a newline.
display_segments() {
local -a segments="$@"
for segment in "${segments[@]}"; do
if [ -n "$segment" ]; then
echo -n "$segment"
fi
done
echo
}
# Colors text using either the first or second color
#
# Arguments:
# $1 - Text
# $2 - Color to use if toggle is false
# $3 - Color to use if toggle is true
# $4 - A boolean used to toggle between colors
#
# Returns:
# The colored text
multicolor() {
local color="$2"
local toggle=$4
if $toggle && [ -n "$3" ]; then
color="$3"
fi
if [ -n "$color" ]; then
echo "$(span -c "$color" "$1")"
else
echo "$(span "$1")"
fi
}
# Display a notification.
#
# Arguments:
# $text (string) The notification text.
# $symbol (string) Name of an symbol.
# $type (string) The type of notification.
# $force (string) Force the notification, ignoring any throttle.
# $rest (string) Any additional options to pass to the command.
notify() {
local text="$1"
local symbol="$2"
local type="$3"
local force="$4"
local rest="${@:5}"
local command
if [ -z "$text" ] || ! $force && ! $(can_notify); then return; fi
if [ "$_NOTIFY_PROGRAM" = "dunstify" ]; then
command="dunstify -r 1001"
elif [ "$_NOTIFY_PROGRAM" = "notify-send" ]; then
command="notify-send"
fi
if [ -n "$_NOTIFY_EXPIRES" ]; then command="$command -t $_NOTIFY_EXPIRES"; fi
if [ -n "$symbol" ]; then command="$command -i $symbol"; fi
if [ -n "$type" ]; then command="$command -u $type"; fi
command="$command $rest \"$text\""
if eval $command; then
save_last_notify_time
fi
}
# Display a dialog.
#
# Arguments:
# $text (string) The dialog text.
# $symbol (string) Name of an symbol.
# $type (string) The type of dialog.
# $rest (string) Any additional options to pass to the command.
dialog() {
local text="$1"
local symbol="$2"
local type="$3"
local rest="${@:4}"
if [ -z "$text" ]; then
return
fi
command="zenity"
if [ -n "$symbol" ]; then command="$command --symbol-name=\"$symbol\""; fi
if [ -n "$type" ]; then command="$command --${type}"; fi
command="$command --text=\"$text\" $rest"
eval $command
}
# Display program usage.
usage() {
echo -e "Usage: $0 [options]
Display the battery status using upower for i3blocks.\n
Options:
-a <none|notify>\taction to take when battery is low
-A <color>\t\tcolor of the alert symbol
-B <color>\t\tcolor of the battery symbol
-c <capacity>\t\tset battery capacity alert percentage (0=disable)
-C <color>\t\tcolor of the charging symbol
-d\t\t\tshow the direction of change for the battery's percentage
-D <color>\t\tcolor of the discharging symbol
-e <millseconds>\texpiration time of notifications (Ubuntu's Notify OSD and GNOME Shell both ignore this parameter.)
-E <color>\t\tcolor of the battery error symbol
-f <font>\t\tfont for text and symbols
-F <color>\t\tcolor of the fully-charged symbol
-G\t\t\tcolor the battery symbol according to battery percentage
-h\t\t\tdisplay this help and exit
-H\t\t\tsuppress displaying if battery is fully-charged
-i <color>\t\tcolor gradient start color
-I\t\t\tonly display symbols
-j <color>\t\tcolor gradient end color
-J <symbol>\t\tsymbol for a battery 100% charged
-k\t\t\thide the battery percentage
-K <symbol>\t\tsymbol for a battery 75% charged
-l <none|notify>\taction to take when the battery level reaches critical
-L <symbol>\t\tsymbol to indicate there is an alert
-M <symbol>\t\tsymbol for a battery 50% charged
-n <program>\t\ta libnotify compatible notification program
-N <color>\t\tcolor of the battery charge decreasing indicator
-O <symbol>\t\tsymbol for a battery with no/low charge
-p <symbol>\t\tsymbol to use for the percent sign
-P <color>\t\tcolor of the pending charge symbol
-Q <symbol>\t\tsymbol for a battery 25% charged
-r\t\t\thide the battery time remaining
-R <symbol>\t\tsymbol to indicate the battery state is undefined
-S <symbol>\t\tsymbol to indicate battery is fully charged
-t <seconds>\t\tminimum time in seconds between notifications to prevent spam
-T <symbol>\t\tsymbol to indicate the battery is charging
-u\t\t\thide the time to charge the battery to full
-U <color>\t\tcolor of the battery charge increasing indicator
-V <symbol>\t\tsymbol to indicate the battery state is unknown
-W <symbol>\t\tsymbol to indicate battery charge is increasing
-X <symbol>\t\tsymbol to indicate the battery state is pending
-Y <symbol>\t\tsymbol to indicate the battery is discharging
-Z <symbol>\t\tsymbol to indicate battery charge is decreasing
" 1>&2
exit 1
}
###############################################################################
declare -a long_segments
declare -a short_segments
__UPOWER_INFO=$(upower --show-info "/org/freedesktop/UPower/devices/battery_${BLOCK_INSTANCE:-BAT0}")
TMP_NOTIFY="$(get_temp_dir)/battery-plus.last_notify"
while getopts "a:A:B:c:C:dD:e:E:F:GhHi:Ij:J:kK:l:L:M:n:N:O:p:P:Q:rR:S:t:T:uU:V:W:X:Y:Z:" o; do
case "$o" in
a) _LOW_ACTION="${OPTARG}" ;;
A) _COLOR_ALERT="${OPTARG}" ;;
B) _COLOR_BATTERY="${OPTARG}" ;;
c) _CAPACITY_ALERT="${OPTARG}" ;;
C) _COLOR_CHARGING="${OPTARG}" ;;
d) _SHOW_CHARGE_DIRECTION=true ;;
D) _COLOR_DISCHARGING="${OPTARG}" ;;
e) _NOTIFY_EXPIRES="${OPTARG}" ;;
E) _COLOR_ERROR="${OPTARG}" ;;
F) _COLOR_FULLY_CHARGED="${OPTARG}" ;;
G) _USE_BATT_GRADIENT=true ;;
h | *) usage ;;
H) _HIDE_IF_CHARGED=true ;;
i) _COLOR_GRADIENT_START="${OPTARG}" ;;
I) _SYMBOLS_ONLY=true ;;
j) _COLOR_GRADIENT_END="${OPTARG}" ;;
J) _SYMBOL_BATT_100="${OPTARG}" ;;
k) _HIDE_PERCENTAGE=true ;;
K) _SYMBOL_BATT_75="${OPTARG}" ;;
l) _CRITICAL_ACTION="${OPTARG}" ;;
L) _SYMBOL_ALERT="${OPTARG}" ;;
M) _SYMBOL_BATT_50="${OPTARG}" ;;
n) _NOTIFY_PROGRAM="${OPTARG}" ;;
N) _COLOR_DIRECTIONAL_DOWN="${OPTARG}" ;;
O) _SYMBOL_BATT_0="${OPTARG}" ;;
p) _PERCENT="${OPTARG}" ;;
P) _COLOR_PENDING="${OPTARG}" ;;
Q) _SYMBOL_BATT_25="${OPTARG}" ;;
r) _HIDE_TIME_REMAINING=true ;;
R) _SYMBOL_ERROR="${OPTARG}" ;;
S) _SYMBOL_FULLY_CHARGED="${OPTARG}" ;;
t) _NOTIFY_THROTTLE="${OPTARG}" ;;
T) _SYMBOL_CHARGING="${OPTARG}" ;;
u) _HIDE_TIME_TO_FULL=true ;;
U) _COLOR_DIRECTIONAL_UP="${OPTARG}" ;;
V) _SYMBOL_UNKNOWN="${OPTARG}" ;;
W) _SYMBOL_DIRECTION_UP="${OPTARG}" ;;
X) _SYMBOL_PENDING="${OPTARG}" ;;
Y) _SYMBOL_DISCHARGING="${OPTARG}" ;;
Z) _SYMBOL_DIRECTION_DOWN="${OPTARG}" ;;
esac
done
shift $((OPTIND-1)) # Shift off options and optional --
battery_percentage=$(get_battery_percent)
percentage_color=$(get_percentage_color "$battery_percentage")
capacity=$(get_battery_capacity)
battery_charge_symbol=$(get_battery_charge_symbol "$battery_percentage")
battery_status_symbol=$(get_battery_status_symbol)
colored_battery_symbol=$(multicolor "$battery_charge_symbol" "$_COLOR_BATTERY" "$percentage_color" $_USE_BATT_GRADIENT)
warning_level=$(get_battery_warning_level)
# Handle battery warning levels
case "$warning_level" in
critical)
case "$_CRITICAL_ACTION" in
notify) $(notify "$(span "Your battery level is ${warning_level}!")" "$battery_status_symbol" "critical" false "-c device") ;;
esac
;;
low)
case "$_LOW_ACTION" in
notify) $(notify "$(span "Your battery level is ${warning_level}")" "$battery_status_symbol" "normal" false "-c device") ;;
esac
;;
esac
# Displayable alerts
if [ "$_CAPACITY_ALERT" -gt 0 ] && [ "${capacity%.*}" -le $_CAPACITY_ALERT ]; then
CAPACITY_TRIGGERED=true
long_segments+=( "$(span -c "$_COLOR_ALERT" "$_SYMBOL_ALERT") " )
fi
# Battery statuses
status=$(get_battery_status)
case "$status" in
charging) long_segments+=( "$(display_batt_charging)" ) ;;
discharging) long_segments+=( "$(display_batt_discharging)" ) ;;
empty) long_segments+=( "$(display_batt_empty)" ) ;;
fully-charged)
if $_HIDE_IF_CHARGED; then
exit 0
fi
long_segments+=( "$(display_batt_fully_charged)" )
;;
pending-charge) long_segments+=( "$(display_batt_pending_charge)" ) ;;
pending-discharge) long_segments+=( "$(display_batt_pending_discharge)" ) ;;
unknown) long_segments+=( "$(display_batt_unknown)" ) ;;
*) long_segments+=( "$(display_batt_error)" ) ;;
esac
# Since long_segments contains no text at this point, lets use it for the short_text
short_segments=( "${long_segments[@]}" )
# Append all text segments
long_segments+=( "$(display_percentage)" )
if [ -n "$(display_time_remaining)" ]; then
long_segments+=( "($(display_time_remaining))" )
fi
if [ -n "$(display_time_to_full)" ]; then
long_segments+=( "($(display_time_to_full))" )
fi
# Display the block long_text
display_segments ${long_segments[@]}
# Display the block short_text
display_segments ${short_segments[@]}
# Handle click events
case $BLOCK_BUTTON in
1)
if [ -n "$CAPACITY_TRIGGERED" ]; then
$(dialog "$(span "Your battery capacity has reduced to ${capacity%.*}${_PERCENT}!")" "battery-caution" "warning" "--no-wrap")
else
if [ "$status" = "discharging" ]; then
$(notify "$(span "$(display_time_remaining true) remaining")" "alarm-symbolic" "normal" true "-c device")
elif [ "$status" = "charging" ]; then
$(notify "$(span "$(display_time_to_full true) until fully charged")" "alarm-symbolic" "normal" true "-c device")
fi
fi
;;
esac
if [ -n "$battery_percentage" ] && [ "$battery_percentage" -le 5 ]; then
exit 33
fi

35
all/.config/i3blocks/calendar Executable file
View File

@@ -0,0 +1,35 @@
#!/bin/bash
DATEFMT=${DATEFMT:-"+%a %d.%m.%Y %H:%M:%S"}
SHORTFMT=${SHORTFMT:-"+%H:%M:%S"}
OPTIND=1
while getopts ":f:" opt; do
case $opt in
f) DATEFMT="$OPTARG" ;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
case "$BLOCK_BUTTON" in
1|2|3)
# Try to focus Thunderbird
i3-msg -q [class="Thunderbird" instance="Mail"] focus
if [ $? == 2 ]
then
# Open Thunderbird if it was not open
i3-msg -q "exec thunderbird -mail -calendar"
else
# Open calendar
xdotool key --clearmodifiers --delay 5 ctrl+shift+c
fi
esac
echo "$LABEL$(date "$DATEFMT")"
echo "$LABEL$(date "$SHORTFMT")"

View File

@@ -0,0 +1,35 @@
#!/bin/bash
DATEFMT=${DATEFMT:-"+%a %d.%m.%Y %H:%M:%S"}
SHORTFMT=${SHORTFMT:-"+%H:%M:%S"}
OPTIND=1
while getopts ":f:" opt; do
case $opt in
f) DATEFMT="$OPTARG" ;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
case "$BLOCK_BUTTON" in
1|2|3)
# Try to focus Thunderbird
i3-msg -q [class="Thunderbird" instance="Mail"] focus
if [ $? == 2 ]
then
# Open Thunderbird if it was not open
i3-msg -q "exec thunderbird -mail -calendar"
else
# Open calendar
xdotool key --clearmodifiers --delay 5 ctrl+shift+c
fi
esac
echo "$LABEL$(date "$DATEFMT")"
echo "$LABEL$(date "$SHORTFMT")"

View File

@@ -0,0 +1,30 @@
# i3blocks configuration file
#
# The i3blocks man page describes the usage of the binary,
# and its website describes the configuration:
#
# https://vivien.github.io/i3blocks
# Sources:
# https://github.com/hastinbe/i3blocks-battery-plus
# https://github.com/zakariaGatter/i3blocks-gate
# Global properties
separator=true
separator_block_width=15
[activity]
command=./activity
interval=10
LABEL=
[volume]
command=./volume
LABEL=
interval=10
signal=10
[calendar]
command=./calendar
interval=1

462
all/.config/i3blocks/i3b-gate Executable file
View File

@@ -0,0 +1,462 @@
#!/usr/bin/env bash
# Zakaria Barkouk ( Zakaria.gatter@gmail.com)
#---------------------#
# SHOW CPU INFO (TOP) #
#---------------------#
_BLOCK_1_(){ #{{{
mpstat | awk '/all/{print "'"${1:-} "'"$4}'
} #}}}
#--------------------#
# SHOW ALL CPUS INFO #
#--------------------#
_BLOCK_2_(){ #{{{
mpstat -P ALL | awk -v icon=${1:-} 'BEGIN{printf "%s ", icon} {
if($3 ~ /^[0-9]/){
printf "%s ", $4
}
}'
} #}}}
#--------------------------#
# SHOW MEMORY USAGE (FREE) #
#--------------------------#
_BLOCK_3_(){ #{{{
free -h | awk '/^Mem:/{print "'"${1:-} "'"$3}'
} #}}}
#------------------------#
# SHOW SWAP USAGE (FREE) #
#------------------------#
_BLOCK_4_(){ #{{{
free -h | awk '/^Swap:/{print "'"${1:-}"' "$3}'
} #}}}
#---------------------------#
# SHOW DATE AND TIME (DATE) #
#---------------------------#
_BLOCK_5_(){ #{{{
date +"${1:-} %R %D"
} #}}}
#----------------------------#
# SHOW BATTERY STATUS (ACPI) #
#----------------------------#
_BLOCK_6_(){ #{{{
Bat=$(acpi | awk '{gsub(",|%","",$4); print $4}');
adapt=$(acpi -a | awk '{print $3}');
if [ "$adapt" = "on-line" -a -n "$Bat" ];then
icon0=" "
icon1=" "
icon2=" "
icon3=" "
icon4=" "
elif [ "$adapt" = "on-line" ];then
icon0=""
icon1=""
icon2=""
icon3=""
icon4=""
else
icon0=""
icon1=""
icon2=""
icon3=""
icon4=""
fi
[ -z "$Bat" ] && echo "$icon0 $adapt" && return
[ "$Bat" -gt "100" ] && echo "$icon4 Full"
[ "$Bat" -gt "90" ] && echo "$icon3 $Bat%"
[ "$Bat" -gt "60" ] && echo "$icon2 $Bat%"
[ "$Bat" -gt "30" ] && echo "$icon1 $Bat%"
[ "$Bat" -lt "30" ] && echo "$icon0 $Bat%"
} #}}}
#----------------------#
# SHOW DISK USAGE (DF) #
#----------------------#
_BLOCK_7_() { #{{{
df -h "${1:-/}" | awk '/\/dev\//{print "'"${2:-}"' "$3-G"/"$2}'
} #}}}
#----------------------#
# SHOW KEYBOARD LAYOUT #
#----------------------#
_BLOCK_8_() { #{{{
awk -F '"' '/XKBLAYOUT/{print "'"${1:-} "'"$2}' /etc/default/keyboard
} #}}}
#----------------------#
# SHOW SYSTEM LANGUAGE #
#----------------------#
_BLOCK_9_(){ #{{{
echo "${1:-} ${LANG/.UTF-8/}"
} #}}}
#------------------------------#
# SHOW MACHINE UPTIME (UPTIME) #
#------------------------------#
_BLOCK_10_() { #{{{
uptime | awk '{sub(",","",$4); print "'"${1:- } "'"$3 " " $4}'
} #}}}
#----------------------#
# SHOW TRASH SIZE (DU) #
#----------------------#
_BLOCK_11_() { #{{{
[ -d "$HOME/.local/share/Trash/files" ] && {
du -hc $HOME/.local/share/Trash/files | awk '/total$/{print "'"${1:-} "'"$1}'
} || {
echo "${1:-} ---"
}
} #}}}
#-------------------#
# SHOW WINDOW USAGE #
#-------------------#
_BLOCK_12_() { #{{{
focus=$(xprop -id `xprop -root | awk '/^_NET_ACTIVE_WINDOW/{print $5}'` | awk -F '"' '/^WM_NAME/{print $2}')
if [ -z "$focus" ];then
echo "${1:-} Welcome"
else
[ "${#focus}" -gt "${2:-30}" ] && echo "${1:-} ${focus::${2:-30}} ..." || echo "${1:-} $focus"
fi
} #}}}
#-----------------------------------------#
# SHOW MOCP PLAYING SONG AND STATUS (MOC) #
#-----------------------------------------#
_BLOCK_13_() { # {{{
Title=$(mocp -Q %title)
F_Title=$(basename `mocp -Q %file | tr " " "_"`)
Status=$(mocp -Q %state)
if [ "$Status" != "PLAY" ];then
echo "${1:-} Pause"
elif [ -z "$Title" ];then
echo "${1:-} ${F_Title::30}"
else
echo "${1:-} $Title"
fi
} #}}}
#------------------------------------------------------#
# SHOW MPD PLAYING SONG AND STATUS (MPD; NCMPCCP, MPC) #
#------------------------------------------------------#
_BLOCK_14_() { #{{{
local NCMP=$(mpc | awk '/^\[playing\]/{print $1}')
if [ "$NCMP" = "[playing]" ];then
echo "${1:-} $(basename $(mpc current)) "
else
echo "${1:-} Pause "
fi
} #}}}
#-------------------------#
# SHOW CPU TEMP (XSENSER) #
#-------------------------#
_BLOCK_15_() { #{{{
sensors | awk '/^CPU/{gsub("\+",""); print "'"${1:-} "'"$2}'
} #}}}
#-------------------------#
# SHOW GPU TEMP (XSENSER) #
#-------------------------#
_BLOCK_16_() { #{{{
sensors | awk '/^GPU/{gsub("\+",""); print "'"${1:-} "'"$2}' | tail -1
} #}}}
#----------------------------------#
# SHOW TOUCHPAD STATUS (SYSCLIENT) #
#----------------------------------#
_BLOCK_17_() { #{{{
[ "$(synclient -l | awk '/Touchpad/{print $3}')" = "0" ] && echo "${1:-} Enable" || echo "${1:-} Disable"
} #}}}
#---------------------------#
# SHOW VOLUME STATUS (ALSA) #
#---------------------------#
_BLOCK_18_() { #{{{
local Vol=$(amixer get Master | awk '/Mono:/{gsub("\[|\%|\]",""); print $4}')
local Mute=$(amixer get Master | awk '/Mono:/{gsub("\[|\]",""); print $6}')
if [ "$Mute" = "off" ];then
echo -e " --"
else
if [ "$Vol" -gt "60" ];then
echo -e " $Vol%"
elif [ "$Vol" -gt "30" ];then
echo -e " $Vol%"
elif [ "$Vol" -lt "30" ];then
echo -e " $Vol%"
fi
fi
} #}}}
#----------------------------------------------#
# SHOW WIFI INFO ; IP ; CONNECTED NAME (NMCLI) #
#----------------------------------------------#
_BLOCK_19_() { #{{{
while read -a W ;do
[ "${W[2]}" = "connected" ] && {
_ip=$(nmcli device show ${W[0]} | awk '/^IP4.ADDRESS/{print $NF}')
_name=$(nmcli device show ${W[0]} | awk '/^GENERAL.CONNECTION:/{$1=""; print $0}')
echo -n "${1:-} ${_ip%/*} (${_name} )"
} || {
echo -n "${1:-} ---"
}
done< <(nmcli d | grep -w "wifi")
echo -e ""
} #}}}
#-------------------------------------------#
# SHOW ETHERNET INFO ; IP ; CONNECTED NAME #
#-------------------------------------------#
_BLOCK_20_() { #{{{
while read -a W ;do
[ "${W[2]}" = "connected" ] && {
_ip=$(nmcli device show ${W[0]} | awk '/^IP4.ADDRESS/{print $NF}')
_name=$(nmcli device show ${W[0]} | awk '/^GENERAL.CONNECTION:/{$1=""; print $0}')
echo -n "${1:-} ${_ip%/*} (${_name} ) "
} || {
echo -n "${1:-} ---"
}
done< <(nmcli d | grep "ethernet")
echo -e ""
} #}}}
#-----------------------------------------------#
# SHOW WIFI INFO ; IP6 ; CONNECTED NAME (NMCLI) #
#-----------------------------------------------#
_BLOCK_21_() { #{{{
while read -a W ;do
[ "${W[2]}" = "connected" ] && {
_ip=$(nmcli device show ${W[0]} | awk '/^IP6.ADDRESS/{print $NF}')
_name=$(nmcli device show ${W[0]} | awk '/^GENERAL.CONNECTION:/{$1=""; print $0}')
echo -n "${1:-} ${_ip%/*} (${_name} ) "
} || {
echo -n "${1:-} ---"
}
done< <(nmcli d | grep "wifi")
echo -e ""
} #}}}
#--------------------------------------------#
# SHOW ETHERNET INFO ; IP6 ; CONNECTED NAME #
#--------------------------------------------#
_BLOCK_22_() { #{{{
while read -a W ;do
[ "${W[2]}" = "connected" ] && {
_ip=$(nmcli device show ${W[0]} | awk '/^IP6.ADDRESS/{print $NF}')
_name=$(nmcli device show ${W[0]} | awk '/^GENERAL.CONNECTION:/{$1=""; print $0}')
echo -n "${1:-} ${_ip%/*} (${_name} ) "
} || {
echo -n "${1:-} ---"
}
done< <(nmcli d | grep "ethernet")
echo -e ""
} #}}}
#-------------------------------#
# SHOW PROSSES USE BY THIS USER #
#-------------------------------#
_BLOCK_23_() { #{{{
echo "${1:-} $(ps -U $USER | wc -l)"
} #}}}
#---------------------#
# SHOW SYSTEM KERENEL #
#---------------------#
_BLOCK_24_() { #{{{
echo "${1:-} $(uname -r)"
} #}}}
#-----------------------------#
# SHOW USB PLUG IN UR COMPUTE #
#-----------------------------#
_BLOCK_25_() { #{{{
echo "${1:-} $(lsblk -l -o 'TRAN' | grep -c "usb")"
} #}}}
#---------------------------------------#
# SHOW TOTAL PKGS INSTALL IN YOUR SYSTE #
#---------------------------------------#
_BLOCK_26_() { #{{{
echo "${1:-} $(dpkg -l | grep -c "^ii")"
} #}}}
#--------------------------------------------#
# CHECK IF THERE IS ANY UPDATE IN UR SYSTEM #
#--------------------------------------------#
_BLOCK_27_() { #{{{
local U_PKGS=$(apt-get -s -o APT::Get::Show-User-Simulation-Note=0 dist-upgrade | grep "^\s\s" | wc -w);
echo "${1:-} $U_PKGS"
} #}}}
#-----------------#
# SHOW UFW STATUS #
#-----------------#
_BLOCK_28_() { #{{{
[ "$(systemctl status ufw | awk '/Active:/{print $2}')" == "active" ] && echo "${1:-} On" || echo "${1:-} Off"
} #}}}
#-------------------------#
# SHOW NUMBER LOCK STATUS #
#-------------------------#
_BLOCK_29_() { #{{{
[ "$(xset -q | awk '/00:/{print $8}')" == "on" ] && echo "${1:-} On" || echo "${1:-} Off"
} #}}}
#-----------------------#
# SHOW BLUETOOTH STATUS #
#-----------------------#
_BLOCK_30_() { #{{{
[ "$(systemctl status bluetooth.target | awk '/Active:/{print $2}')" == "active" ] && echo "${1:-} On" || echo "${1:-} Off"
} #}}}
#------------------------#
# SHOW CAPS LOCK STATUS #
#------------------------#
_BLOCK_31_() { #{{{
[ "$(xset -q | awk '/00:/{print $4}')" == "on" ] && echo "${1:-} On" || echo "${1:-} Off"
} #}}}
#-----------------------------#
# DISPLAY X SCREENSAVER STATE #
#-----------------------------#
_BLOCK_32_() { #{{{
[ "$(xdg-screensaver status)" != "enabled" ] && echo "${1:-} Off" || echo "${1:-} On"
} #}}}
#--------------------------------#
# CALCULE MOUNT POINTS ON SYSTEM #
#--------------------------------#
_BLOCK_33_() { #{{{
echo "${1:-} $(cat /proc/mounts | grep -c "^/dev/sd*") "
} #}}}
#-------------------------#
# SHOW CMUS PLAYING SONG #
#-------------------------#
_BLOCK_34_() { #{{{
local CMUS_P=$(cmus-remote -Q | awk '/^status/{print $2}')
local CMUS_F=$(cmus-remote -Q | awk '/^file/{$1=""; print $2}')
if [ "$CMUS_P" = "Playing" ];then
echo "${1:-} $(basename $CMUS_F)"
else
echo "${1:-} Pause"
fi
} #}}}
#----------------------#
# SHOW APPARMOR STATUS #
#----------------------#
_BLOCK_35_() { #{{{
[ "$(aa-enabled)" = "Yes" ] && {
echo "${1:-} On"
}||{
echo "${1:-} Off"
}
} #}}}
#-----------------------------#
# SHOW TOTAL PACKAGES IN ARCH #
#-----------------------------#{{{
_BLOCK_36_(){
echo "${1:-} $(pacman -Q | grep -c "*")"
}
#}}}
#--------------------#
# SHOW I3 WORKSPACES #
#--------------------#
_BLOCK_37_() { #{{{
i3-msg -t get_workspaces | awk -F , '{
for(i=1;i<=NF;i++){
if($i~"name"){
gsub("\"name\":|\"","",$i)
WK=$i
}
if($i~"focused"){
gsub("\"focused\":","",$i)
WKF=$i
}
if($i~"urgent"){
gsub("\"urgent\":|\]|\}","",$i)
if($i=="false" && WKF=="true"){
printf "%s ", WK
}
if($i=="false" && WKF=="false"){
printf"[%s] ", WK
}
if($i=="true" && WKF=="false"){
printf "[*%s] ", WK
}
if($i=="true" && WKF=="true"){
printf "*%s ", WK
}
}
}
}'
} #}}}
#-----------------#
# SHOW USER NAME #
#-----------------#
_BLOCK_38_(){ #{{{
echo -e "${1:-} $USER"
} #}}}
#-------------------#
# SHOW VOLUME PULSE #
#-------------------#
_BLOCK_39_(){
local Vol=$(pactl list sinks | awk '/Volume: front/{print $5-"%"}')
local Mute=$(amixer get Master | awk '/Mono:/{gsub("\[|\]",""); print $6}')
if [ "$Mute" = "off" ];then
echo -e " --"
else
if [ "$Vol" -gt "60" ];then
echo -e " $Vol%"
elif [ "$Vol" -gt "30" ];then
echo -e " $Vol%"
elif [ "$Vol" -lt "30" ];then
echo -e " $Vol%"
fi
fi
}
#------------------------#
# USAGE AND HELP DIALOG #
#------------------------#
_USAGE_(){ #{{{
echo -e "
i3b-gate : is a all in one collaction of small script
show you useful unformation about your system
There is 39 deffirent script to use
for more information you can see the 'README' file
or visite 'https://gitlab.com/zakariagatter/i3blocks-gate'
SYNTAX :
i3b-gate [NUMBER] ...
"
} #}}}
#----------------#
# MAIN ARGUMENT #
#----------------#
if [ "$1" -gt "39" ] || [ -z "$1" ] ;then
_USAGE_
elif [ "$1" = "-h" ]; then
_USAGE_
else
eval $(echo "_BLOCK_$1_ $2 $3")
fi

26
all/.config/i3blocks/keyboard Executable file
View File

@@ -0,0 +1,26 @@
#!/bin/sh
get_current_layout () {
setxkbmap -print | grep -q dvorak
if [ "$?" -eq "0" ]; then
echo dvorak
else
echo qwertz
fi
}
case "$BLOCK_BUTTON" in
1|2|3)
# Switch layout
current_layout=$(get_current_layout)
if [ $current_layout == dvorak ]; then
setxkbmap -layout de
else
setxkbmap -layout de -variant dvorak
fi
esac
current_layout=$(get_current_layout)
echo "$LABEL $current_layout"
echo "$LABEL $current_layout"

91
all/.config/i3blocks/volume Executable file
View File

@@ -0,0 +1,91 @@
#!/usr/bin/env bash
# Copyright (C) 2014 Julien Bonjean <julien@bonjean.info>
# Copyright (C) 2014 Alexander Keller <github@nycroth.com>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#------------------------------------------------------------------------
# The second parameter overrides the mixer selection
# For PulseAudio users, eventually use "pulse"
# For Jack/Jack2 users, use "jackplug"
# For ALSA users, you may use "default" for your primary card
# or you may use hw:# where # is the number of the card desired
if [[ -z "$MIXER" ]] ; then
MIXER="default"
if command -v pulseaudio >/dev/null 2>&1 && pulseaudio --check ; then
# pulseaudio is running, but not all installations use "pulse"
if amixer -D pulse info >/dev/null 2>&1 ; then
MIXER="pulse"
fi
fi
[ -n "$(lsmod | grep jack)" ] && MIXER="jackplug"
MIXER="${2:-$MIXER}"
fi
# The instance option sets the control to report and configure
# This defaults to the first control of your selected mixer
# For a list of the available, use `amixer -D $Your_Mixer scontrols`
if [[ -z "$SCONTROL" ]] ; then
SCONTROL="${BLOCK_INSTANCE:-$(amixer -D $MIXER scontrols |
sed -n "s/Simple mixer control '\([^']*\)',0/\1/p" |
head -n1
)}"
fi
# The first parameter sets the step to change the volume by (and units to display)
# This may be in in % or dB (eg. 5% or 3dB)
if [[ -z "$STEP" ]] ; then
STEP="${1:-5%}"
fi
# AMIXER(1):
# "Use the mapped volume for evaluating the percentage representation like alsamixer, to be
# more natural for human ear."
NATURAL_MAPPING=${NATURAL_MAPPING:-0}
if [[ "$NATURAL_MAPPING" != "0" ]] ; then
AMIXER_PARAMS="-M"
fi
#------------------------------------------------------------------------
capability() { # Return "Capture" if the device is a capture device
amixer $AMIXER_PARAMS -D $MIXER get $SCONTROL |
sed -n "s/ Capabilities:.*cvolume.*/Capture/p"
}
volume() {
amixer $AMIXER_PARAMS -D $MIXER get $SCONTROL $(capability)
}
format() {
perl_filter='if (/.*\[(\d+%)\] (\[(-?\d+.\d+dB)\] )?\[(on|off)\]/)'
perl_filter+='{CORE::say $4 eq "off" ? "MUTE" : "'
# If dB was selected, print that instead
perl_filter+=$([[ $STEP = *dB ]] && echo '$3' || echo '$1')
perl_filter+='"; exit}'
output=$(perl -ne "$perl_filter")
echo "$LABEL $output"
}
#------------------------------------------------------------------------
case $BLOCK_BUTTON in
1|2|3) pavucontrol ;; # right click, open gui
4) amixer $AMIXER_PARAMS -q -D $MIXER sset $SCONTROL $(capability) ${STEP}+ unmute ;; # scroll up, increase
5) amixer $AMIXER_PARAMS -q -D $MIXER sset $SCONTROL $(capability) ${STEP}- unmute ;; # scroll down, decrease
esac
volume | format

497
all/.config/mc/mc.keymap Normal file
View File

@@ -0,0 +1,497 @@
[main]
ChangePanel = tab
Help = f1
UserMenu = f2
View = f3
# ViewFile =
Edit = f4
# EditForceInternal =
Copy = f5
Move = f6
MakeDir = f7
Delete = f8
Menu = f9
Quit = f10
MenuLastSelected = f19
QuitQuiet = f20
Find = alt-question
CdQuick = alt-c
HotList = alt-backslash; ctrl-b
Reread = ctrl-r
DirSize = ctrl-space
Suspend = ctrl-z
Swap = ctrl-u
History = alt-h
# PanelListing =
# SetupListingFormat =
ShowHidden = alt-dot
SplitVertHoriz = alt-comma
SplitEqual = alt-equal
SplitMore = alt-shift-right
SplitLess = alt-shift-left
Shell = ctrl-o
PutCurrentPath = alt-a
PutOtherPath = alt-shift-a
PutCurrentSelected = alt-enter; ctrl-enter
PutCurrentFullSelected = ctrl-shift-enter
ViewFiltered = alt-exclamation
Select = kpplus
Unselect = kpminus
SelectInvert = kpasterisk
ScreenList = alt-prime
# OptionsLayout =
# OptionsAppearance =
# OptionsPanel =
# OptionsConfirm =
# OptionsDisplayBits =
# OptionsVfs =
# LearnKeys =
# SaveSetup =
# EditExtensionsFile =
# EditFileHighlightFile =
# Filter =
# ConnectFish =
# ConnectFtp =
# ConnectSmb =
# Undelete =
EditorViewerHistory = alt-shift-e
ExtendedKeyMap = ctrl-x
[main:xmap]
ChangeMode = c
ChangeOwn = o
ChangeAttributes = e
CompareDirs = d
CompareFiles = ctrl-d
HotListAdd = h
LinkSymbolicEdit = ctrl-s
Link = l
LinkSymbolic = s
LinkSymbolicRelative = v
PanelInfo = i
PanelQuickView = q
ExternalPanelize = exclamation
VfsList = a
Jobs = j
PutCurrentPath = p
PutOtherPath = ctrl-p
PutCurrentTagged = t
PutOtherTagged = ctrl-t
PutCurrentLink = r
PutOtherLink = ctrl-r
[panel]
CycleListingFormat = alt-t
Search = ctrl-s; alt-s
Mark = insert; ctrl-t
MarkUp = shift-up
MarkDown = shift-down
# MarkLeft =
# MarkRight =
Down = down; ctrl-n
Up = up; ctrl-p
Left = left
Right = right
PageUp = pgup; alt-v
PageDown = pgdn; ctrl-v
Enter = enter
PanelOtherCd = alt-o
PanelOtherCdLink = alt-l
ViewRaw = f13
EditNew = f14
CopySingle = f15
MoveSingle = f16
DeleteSingle = f18
# SelectExt =
Select = alt-plus
Unselect = alt-minus
SelectInvert = alt-asterisk
CdChild = ctrl-pgdn
CdParent = ctrl-pgup
# CdParentSmart =
# Panelize =
History = alt-shift-h
HistoryNext = alt-u
HistoryPrev = alt-y
BottomOnScreen = alt-j
MiddleOnScreen = alt-r
TopOnScreen = alt-g
PanelOtherSync = alt-i
SelectCodepage = alt-e
Top = alt-lt; home; a1
Bottom = alt-gt; end; c1
# Sort =
# SortPrev =
# SortNext =
# SortReverse =
# SortByName =
# SortByExt =
# SortBySize =
# SortByMTime =
# ScrollLeft =
# ScrollRight =
[dialog]
Ok = enter
Cancel = f10; esc; ctrl-g
Up = left; up
#Left = left; up
Down = right; down
#Right = right; down
Help = f1
Suspend = ctrl-z
Refresh = ctrl-l
ScreenList = alt-prime
ScreenNext = alt-rbrace
ScreenPrev = alt-lbrace
[menu]
Help = f1
Left = left; ctrl-b
Right = right; ctrl-f
Up = up; ctrl-p
Down = down; ctrl-n
Home = home; alt-lt; ctr-a
End = end; alt-gt ctrl-e
Enter = enter
Quit = F10; esc; ctrl-g
[input]
Home = ctrl-a; alt-lt; home; a1
End = ctrl-e; alt-gt; end; c1
Left = left; alt-left; ctrl-b
Right = right; alt-right; ctrl-f
WordLeft = ctrl-left; alt-b
WordRight = ctrl-right; alt-f
Backspace = backspace
Delete = delete; ctrl-d
DeleteToWordBegin = alt-backspace
DeleteToWordEnd = alt-d
# Mark =
Remove = ctrl-w
# Cut =
Store = alt-w
# Paste =
Yank = ctrl-y
DeleteToEnd = ctrl-k
HistoryPrev = alt-p; ctrl-down
HistoryNext = alt-n; ctrl-up
History = alt-h
Complete = alt-tab
# Clear =
MarkLeft = shift-left
MarkRight = shift-right
MarkToWordBegin = ctrl-shift-left
MarkToWordEnd = ctrl-shift-right
MarkToHome = shift-home
MarkToEnd = shift-end
[listbox]
Up = up; ctrl-p
Down = down; ctrl-n
Top = home; alt-lt; a1
Bottom = end; alt-gt; c1
PageUp = pgup; alt-v
PageDown = pgdn; ctrl-v
Delete = delete; d
Clear = shift-delete; shift-d
View = f3
Edit = f4
Enter = enter
[radio]
Up = up; ctrl-p
Down = down; ctrl-n
Top = home; alt-lt; a1
Bottom = end; alt-gt; c1
Select = space
[tree]
Help = f1
Reread = f2; ctrl-r
Forget = f3
ToggleNavigation = f4
Copy = f5
Move = f6
Up = up; ctrl-p
Down = down; ctrl-n
Left = left
Right = right
Top = home; alt-lt; a1
Bottom = end; alt-gt; c1
PageUp = pgup; alt-v
PageDown = pgdn; ctrl-v
Enter = enter
Search = ctrl-s; alt-s
Delete = f8; delete
[help]
Help = f1
Index = f2; c
Back = f3; left; l
Quit = f10; esc
Up = up; ctrl-p
Down = down; ctrl-n
PageDown = f; space; pgdn; ctrl-v
PageUp = b; pgup; alt-v; backspace
HalfPageDown = d
HalfPageUp = u
Top = home; ctrl-home; ctrl-pgup; a1; alt-lt; g
Bottom = end; ctrl-end; ctrl-pgdn; c1; alt-gt; shift-g
Enter = right; enter
LinkNext = tab
LinkPrev = alt-tab
NodeNext = n
NodePrev = p
[chattr]
Up = up; left; ctrl-p
Down = down; right; ctrl-n
Top = home; alt-lt; a1
Bottom = end; alt-gt; c1
PageUp = pgup; alt-v
PageDown = pgdn; ctrl-v
Mark = t; shift-t
MarkAndDown = insert
[editor]
Store = ctrl-insert
Paste = shift-insert
Cut = shift-delete
Up = up
Down = down
Left = left
Right = right
WordLeft = ctrl-left; ctrl-z
WordRight = ctrl-right; ctrl-x
Enter = enter
Return = shift-enter; ctrl-enter; ctrl-shift-enter
BackSpace = backspace; ctrl-h
Delete = delete; ctrl-d
PageUp = pgup
PageDown = pgdn
Home = home
End = end
Tab = tab; shift-tab; ctrl-tab; ctrl-shift-tab
Undo = ctrl-u
Redo = alt-r
Top = ctrl-home; alt-lt
Bottom = ctrl-end; alt-gt
ScrollUp = ctrl-up
ScrollDown = ctrl-down
TopOnScreen = ctrl-pgup
BottomOnScreen = ctrl-pgdn
DeleteToWordBegin = alt-backspace
DeleteToWordEnd = alt-d
DeleteLine = ctrl-y
DeleteToEnd = ctrl-k
# DeleteToHome =
# ParagraphUp =
# ParagraphDown =
Save = f2
# EditFile =
EditNew = ctrl-n
SaveAs = f12; ctrl-f2
# Close =
History = alt-shift-e
Mark = f3
Copy = f5
Move = f6
Remove = f8
# MarkLine =
# MarkWord =
# MarkAll =
# Unmark =
Search = f7
SearchContinue = f17
# BlockShiftLeft =
# BlockShiftRight =
MarkPageUp = shift-pgup
MarkPageDown = shift-pgdn
MarkLeft = shift-left
MarkRight = shift-right
MarkToWordBegin = ctrl-shift-left
MarkToWordEnd = ctrl-shift-right
MarkUp = shift-up
MarkDown = shift-down
MarkToHome = shift-home
MarkToEnd = shift-end
MarkToFileBegin = ctrl-shift-home
MarkToFileEnd = ctrl-shift-end
MarkToPageBegin = ctrl-shift-pgup
MarkToPageEnd = ctrl-shift-pgdn
MarkScrollUp = ctrl-shift-up
MarkScrollDown = ctrl-shift-down
# MarkParagraphUp =
# MarkParagraphDown =
MarkColumnPageUp = alt-pgup
MarkColumnPageDown = alt-pgdn
MarkColumnLeft = alt-left
MarkColumnRight = alt-right
MarkColumnUp = alt-up
MarkColumnDown = alt-down
# MarkColumnScrollUp =
# MarkColumnScrollDown =
# MarkColumnParagraphUp =
# MarkColumnParagraphDown =
BlockSave = ctrl-f
MarkColumn = f13
Replace = f4
ReplaceContinue = f14
Complete = alt-tab
InsertFile = f15
Quit = f10; esc
InsertOverwrite = insert
Help = f1
# Date =
Refresh = ctrl-l
Goto = alt-l
Sort = alt-t
Mail = alt-m
ParagraphFormat = alt-p
MatchBracket = alt-b
ExternalCommand = alt-u
UserMenu = f11
Menu = f9
Bookmark = alt-k
BookmarkFlush = alt-o
BookmarkNext = alt-j
BookmarkPrev = alt-i
# History =
Shell = ctrl-o
InsertLiteral = ctrl-q
# MacroStartRecord =
# MacroStopRecord =
MacroStartStopRecord = ctrl-r
# MacroDelete =
ShowNumbers = alt-n
ShowTabTws = alt-underline
SyntaxOnOff = ctrl-s
# SyntaxChoose =
# ShowMargin =
Find = alt-enter
FilePrev = alt-minus
FileNext = alt-plus
# RepeatStartStopRecord =
SelectCodepage = alt-e
# Options =
# OptionsSaveMode =
# SpellCheck =
SpellCheckCurrentWord = ctrl-p
# SpellCheckSelectLang =
# LearnKeys =
# WindowMove =
# WindowResize =
# WindowFullscreen =
# WindowList =
# WindowNext =
# WindowPrev =
# ExtendedKeyMap =
[viewer]
Help = f1
WrapMode = f2
Quit = f3; f10; q; esc
HexMode = f4
Goto = f5
Search = f7
SearchForward = slash
SearchBackward = question
SearchContinue = f17; n
SearchForwardContinue = ctrl-s
SearchBackwardContinue = ctrl-r
SearchOppositeContinue = shift-n
MagicMode = f8
NroffMode = f9
Home = ctrl-a
End = ctrl-e
Left = h; left
Right = l; right
LeftQuick = ctrl-left
RightQuick = ctrl-right
Up = k; y; insert; up; ctrl-p
Down = j; e; delete; down; enter; ctrl-n
PageDown = f; space; pgdn; ctrl-v
PageUp = b; pgup; alt-v; backspace
HalfPageDown = d
HalfPageUp = u
Top = home; ctrl-home; ctrl-pgup; a1; alt-lt; g
Bottom = end; ctrl-end; ctrl-pgdn; c1; alt-gt; shift-g
BookmarkGoto = m
Bookmark = r
FileNext = ctrl-f
FilePrev = ctrl-b
SelectCodepage = alt-e
Shell = ctrl-o
Ruler = alt-r
History = alt-shift-e
[viewer:hex]
Help = f1
HexEditMode = f2
Quit = f3; f10; q; esc
HexMode = f4
Goto = f5
Save = f6
Search = f7
SearchForward = slash
SearchBackward = question
SearchContinue = f17; n
SearchForwardContinue = ctrl-s
SearchBackwardContinue = ctrl-r
SearchOppositeContinue = shift-n
MagicMode = f8
NroffMode = f9
ToggleNavigation = tab
Home = ctrl-a; home
End = ctrl-e; end
Left = b; left
Right = f; right
Up = k; y; up
Down = j; delete; down
PageDown = pgdn; ctrl-v
PageUp = pgup; alt-v
Top = ctrl-home; ctrl-pgup; a1; alt-lt; g
Bottom = ctrl-end; ctrl-pgdn; c1; alt-gt; shift-g
History = alt-shift-e
[diffviewer]
ShowSymbols = alt-s; s
ShowNumbers = alt-n; l
SplitFull = f
SplitEqual = equal
SplitMore = gt
SplitLess = lt
Tab2 = 2
Tab3 = 3
Tab4 = 4
Tab8 = 8
Swap = ctrl-u
Redo = ctrl-r
HunkNext = n; enter; space
HunkPrev = p; backspace
Goto = g; shift-g
Save = f2
Edit = f4
EditOther = f14
Merge = f5
MergeOther = f15
Search = f7
SearchContinue = f17
Options = f9
Top = ctrl-home
Bottom = ctrl-end
Down = down
Up = up
LeftQuick = ctrl-left
RightQuick = ctrl-right
Left = left
Right = right
PageDown = pgdn
PageUp = pgup
Home = home
End = end
Help = f1
Quit = f10; q; shift-q; esc
Shell = ctrl-o
SelectCodepage = alt-e

220
all/.config/nvim/init.vim Normal file
View File

@@ -0,0 +1,220 @@
" URL: http://vim.wikia.com/wiki/Example_vimrc
" Authors: http://vim.wikia.com/wiki/Vim_on_Freenode
" Description: A minimal, but feature rich, example .vimrc. If you are a
" newbie, basing your first .vimrc on this file is a good choice.
" If you're a more advanced user, building your own .vimrc based
" on this file is still a good idea.
"------------------------------------------------------------
" Features {{{1
"
" These options and commands enable some very useful features in Vim, that
" no user should have to live without.
" Set 'nocompatible' to ward off unexpected things that your distro might
" have made, as well as sanely reset options when re-sourcing .vimrc
set nocompatible
" Attempt to determine the type of a file based on its name and possibly its
" contents. Use this to allow intelligent auto-indenting for each filetype,
" and for plugins that are filetype specific.
if has('filetype')
filetype indent plugin on
endif
" Enable syntax highlighting
if has('syntax')
syntax on
endif
" Set leader key
let mapleader = " "
" Plugins
call plug#begin('~/.vim/plugged')
Plug 'itchyny/lightline.vim'
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
" Plug 'Valloric/YouCompleteMe'
" Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() }, 'for': ['markdown', 'vim-plug']}
Plug 'https://github.com/ap/vim-css-color.git'
" Collection of common configurations for the Nvim LSP client
" Plug 'neovim/nvim-lspconfig'
" Extensions to built-in LSP, for example, providing type inlay hints
" Plug 'nvim-lua/lsp_extensions.nvim'
" Autocompletion framework for built-in LSP
" Plug 'hrsh7th/nvim-compe'
" Popup telescope
" Plug 'nvim-lua/popup.nvim'
" Plug 'nvim-lua/plenary.nvim'
" Plug 'nvim-telescope/telescope.nvim'
" Plug 'joshdick/onedark.vim'
" Plug 'tpope/vim-commentary'
call plug#end()
"------------------------------------------------------------
" Must have options {{{1
"
" These are highly recommended options.
" Vim with default settings does not allow easy switching between multiple files
" in the same editor window. Users can use multiple split windows or multiple
" tab pages to edit multiple files, but it is still best to enable an option to
" allow easier switching between files.
"
" One such option is the 'hidden' option, which allows you to re-use the same
" window and switch from an unsaved buffer without saving it first. Also allows
" you to keep an undo history for multiple files when re-using the same window
" in this way. Note that using persistent undo also lets you undo in multiple
" files even in the same window, but is less efficient and is actually designed
" for keeping undo history after closing Vim entirely. Vim will complain if you
" try to quit without saving, and swap files will keep you safe if your computer
" crashes.
set hidden
" Note that not everyone likes working this way (with the hidden option).
" Alternatives include using tabs or split windows instead of re-using the same
" window as mentioned above, and/or either of the following options:
" set confirm
" set autowriteall
" Better command-line completion
set wildmenu
" Show partial commands in the last line of the screen
set showcmd
" Highlight searches (use <C-L> to temporarily turn off highlighting; see the
" mapping of <C-L> below)
set hlsearch
" Modelines have historically been a source of security vulnerabilities. As
" such, it may be a good idea to disable them and use the securemodelines
" script, <http://www.vim.org/scripts/script.php?script_id=1876>.
" set nomodeline
"------------------------------------------------------------
" Usability options {{{1
"
" These are options that users frequently set in their .vimrc. Some of them
" change Vim's behaviour in ways which deviate from the true Vi way, but
" which are considered to add usability. Which, if any, of these options to
" use is very much a personal preference, but they are harmless.
" Use case insensitive search, except when using capital letters
set ignorecase
set smartcase
" Allow backspacing over autoindent, line breaks and start of insert action
set backspace=indent,eol,start
" When opening a new line and no filetype-specific indenting is enabled, keep
" the same indent as the line you're currently on. Useful for READMEs, etc.
set autoindent
" Stop certain movements from always going to the first character of a line.
" While this behaviour deviates from that of Vi, it does what most users
" coming from other editors would expect.
set nostartofline
" Display the cursor position on the last line of the screen or in the status
" line of a window
set ruler
" Always display the status line, even if only one window is displayed
set laststatus=2
" Instead of failing a command because of unsaved changes, instead raise a
" dialogue asking if you wish to save changed files.
set confirm
" Use visual bell instead of beeping when doing something wrong
set visualbell
" And reset the terminal code for the visual bell. If visualbell is set, and
" this line is also included, vim will neither flash nor beep. If visualbell
" is unset, this does nothing.
set t_vb=
" Enable use of the mouse for all modes
if has('mouse')
set mouse=a
endif
" Set the command window height to 2 lines, to avoid many cases of having to
" "press <Enter> to continue"
set cmdheight=2
" Display line numbers on the left
set number relativenumber
" Quickly time out on keycodes, but never time out on mappings
set notimeout ttimeout ttimeoutlen=200
" Use <F11> to toggle between 'paste' and 'nopaste'
set pastetoggle=<F11>
"------------------------------------------------------------
" Indentation options {{{1
"
" Indentation settings according to personal preference.
" Indentation settings for using 4 spaces instead of tabs.
" Do not change 'tabstop' from its default value of 8 with this setup.
set shiftwidth=4
set softtabstop=4
set expandtab
" Indentation settings for using hard tabs for indent. Display tabs as
" four characters wide.
"set shiftwidth=4
"set tabstop=4
"------------------------------------------------------------
" Mappings {{{1
"
" Useful mappings
" Map Y to act like D and C, i.e. to yank until EOL, rather than act as yy,
" which is the default
map Y y$
" Map <C-L> (redraw screen) to also turn off search highlighting until the
" next search
nnoremap <C-L> :nohl<CR><C-L>
" Shortcuts for Ycm
"nnoremap <C-F> :YcmCompleter Format<Cr>
"nnoremap <C-J> :YcmCompleter GoTo<Cr>
nnoremap <C-N> :NERDTreeToggle<Cr>
nnoremap <leader>n :NERDTreeToggle<Cr>
"------------------------------------------------------------
" use Mouse clipboard instead of vims internal one
" use unnamedplus for Keyboard clipboard
set clipboard=unnamed
" Find files using Telescope command-line sugar.
" nnoremap <leader>ff <cmd>Telescope find_files<cr>
"nnoremap <leader>fg <cmd>Telescope live_grep<cr>
"nnoremap <leader>fb <cmd>Telescope buffers<cr>
"nnoremap <leader>fh <cmd>Telescope help_tags<cr>
" !!! Uncomment the following line to load lsp functionality
" Remember to also uncomment the corresponding plugins at the top of this
" file.
" Maybe use doom emacs instead
" :lua require('lsp')

View File

@@ -0,0 +1,277 @@
configuration {
modi: "run,drun";
/* width: 50;*/
lines: 10;
/* columns: 1;*/
/* font: "mono 12";*/
/* bw: 1;*/
/* location: 0;*/
/* padding: 5;*/
/* yoffset: 0;*/
/* xoffset: 0;*/
/* fixed-num-lines: true;*/
show-icons: true;
/* terminal: "rofi-sensible-terminal";*/
/* ssh-client: "ssh";*/
/* ssh-command: "{terminal} -e {ssh-client} {host} [-p {port}]";*/
/* run-command: "{cmd}";*/
/* run-list-command: "";*/
/* run-shell-command: "{terminal} -e {cmd}";*/
/* window-command: "wmctrl -i -R {window}";*/
/* window-match-fields: "all";*/
/* icon-theme: ;*/
/* drun-match-fields: "name,generic,exec,categories,keywords";*/
/* drun-categories: ;*/
/* drun-show-actions: false;*/
/* drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]";*/
/* drun-url-launcher: "xdg-open";*/
/* disable-history: false;*/
/* ignored-prefixes: "";*/
/* sort: false;*/
/* sorting-method: "normal";*/
/* case-sensitive: false;*/
/* cycle: true;*/
/* sidebar-mode: false;*/
/* eh: 1;*/
/* auto-select: false;*/
/* parse-hosts: false;*/
/* parse-known-hosts: true;*/
/* combi-modi: "window,run";*/
/* matching: "normal";*/
/* tokenize: true;*/
/* m: "-5";*/
/* line-margin: 2;*/
/* line-padding: 1;*/
/* filter: ;*/
/* separator-style: "dash";*/
/* hide-scrollbar: false;*/
/* fullscreen: false;*/
/* fake-transparency: false;*/
/* dpi: -1;*/
/* threads: 0;*/
/* scrollbar-width: 8;*/
/* scroll-method: 0;*/
/* fake-background: "screenshot";*/
/* window-format: "{w} {c} {t}";*/
/* click-to-exit: true;*/
/* show-match: true;*/
/* theme: ;*/
/* color-normal: ;*/
/* color-urgent: ;*/
/* color-active: ;*/
/* color-window: ;*/
/* max-history-size: 25;*/
/* combi-hide-mode-prefix: false;*/
/* matching-negate-char: '-' /* unsupported */;*/
/* cache-dir: ;*/
/* window-thumbnail: false;*/
/* drun-use-desktop-cache: false;*/
/* drun-reload-desktop-cache: false;*/
/* normalize-match: false;*/
/* pid: "/run/user/1000/rofi.pid";*/
/* display-window: ;*/
/* display-windowcd: ;*/
/* display-run: ;*/
/* display-ssh: ;*/
/* display-drun: ;*/
/* display-combi: ;*/
/* display-keys: ;*/
/* display-file-browser: ;*/
/* display-calc: ;*/
/* kb-primary-paste: "Control+V,Shift+Insert";*/
/* kb-secondary-paste: "Control+v,Insert";*/
/* kb-clear-line: "Control+w";*/
/* kb-move-front: "Control+a";*/
/* kb-move-end: "Control+e";*/
/* kb-move-word-back: "Alt+b,Control+Left";*/
/* kb-move-word-forward: "Alt+f,Control+Right";*/
/* kb-move-char-back: "Left,Control+b";*/
/* kb-move-char-forward: "Right,Control+f";*/
/* kb-remove-word-back: "Control+Alt+h,Control+BackSpace";*/
/* kb-remove-word-forward: "Control+Alt+d";*/
/* kb-remove-char-forward: "Delete,Control+d";*/
/* kb-remove-char-back: "BackSpace,Shift+BackSpace,Control+h";*/
/* kb-remove-to-eol: "Control+k";*/
/* kb-remove-to-sol: "Control+u";*/
/* kb-accept-entry: "Control+j,Control+m,Return,KP_Enter";*/
kb-accept-custom: "Control+Return";
/* kb-accept-alt: "Shift+Return";*/
/* kb-delete-entry: "Shift+Delete";*/
/* kb-mode-next: "Shift+Right,Control+Tab";*/
/* kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab";*/
/* kb-row-left: "Control+Page_Up";*/
/* kb-row-right: "Control+Page_Down";*/
/* kb-row-up: "Up,Control+p,ISO_Left_Tab";*/
/* kb-row-down: "Down,Control+n";*/
/* kb-row-tab: "Tab";*/
/* kb-page-prev: "Page_Up";*/
/* kb-page-next: "Page_Down";*/
/* kb-row-first: "Home,KP_Home";*/
/* kb-row-last: "End,KP_End";*/
/* kb-row-select: "Control+space";*/
/* kb-screenshot: "Alt+S";*/
/* kb-ellipsize: "Alt+period";*/
/* kb-toggle-case-sensitivity: "grave,dead_grave";*/
/* kb-toggle-sort: "Alt+grave";*/
/* kb-cancel: "Escape,Control+g,Control+bracketleft";*/
/* kb-custom-1: "Alt+1";*/
/* kb-custom-2: "Alt+2";*/
/* kb-custom-3: "Alt+3";*/
/* kb-custom-4: "Alt+4";*/
/* kb-custom-5: "Alt+5";*/
/* kb-custom-6: "Alt+6";*/
/* kb-custom-7: "Alt+7";*/
/* kb-custom-8: "Alt+8";*/
/* kb-custom-9: "Alt+9";*/
/* kb-custom-10: "Alt+0";*/
/* kb-custom-11: "Alt+exclam";*/
/* kb-custom-12: "Alt+at";*/
/* kb-custom-13: "Alt+numbersign";*/
/* kb-custom-14: "Alt+dollar";*/
/* kb-custom-15: "Alt+percent";*/
/* kb-custom-16: "Alt+dead_circumflex";*/
/* kb-custom-17: "Alt+ampersand";*/
/* kb-custom-18: "Alt+asterisk";*/
/* kb-custom-19: "Alt+parenleft";*/
/* kb-select-1: "Super+1";*/
/* kb-select-2: "Super+2";*/
/* kb-select-3: "Super+3";*/
/* kb-select-4: "Super+4";*/
/* kb-select-5: "Super+5";*/
/* kb-select-6: "Super+6";*/
/* kb-select-7: "Super+7";*/
/* kb-select-8: "Super+8";*/
/* kb-select-9: "Super+9";*/
/* kb-select-10: "Super+0";*/
/* ml-row-left: "ScrollLeft";*/
/* ml-row-right: "ScrollRight";*/
/* ml-row-up: "ScrollUp";*/
/* ml-row-down: "ScrollDown";*/
/* me-select-entry: "MousePrimary";*/
/* me-accept-entry: "MouseDPrimary";*/
/* me-accept-custom: "Control+MouseDPrimary";*/
}
/*Dracula theme based on the Purple official rofi theme*/
* {
font: "Jetbrains Mono 14";
foreground: #f8f8f2;
background-color: #282a36;
active-background: #6272a4;
urgent-background: #ff5555;
selected-background: @active-background;
selected-urgent-background: @urgent-background;
selected-active-background: @active-background;
separatorcolor: @active-background;
bordercolor: @active-background;
}
#window {
background-color: @background;
border: 1;
border-radius: 6;
border-color: @bordercolor;
padding: 5;
}
#mainbox {
border: 0;
padding: 0;
}
#message {
border: 1px dash 0px 0px ;
border-color: @separatorcolor;
padding: 1px ;
}
#textbox {
text-color: @foreground;
}
#listview {
fixed-height: 0;
border: 2px dash 0px 0px ;
border-color: @bordercolor;
spacing: 2px ;
scrollbar: false;
padding: 2px 0px 0px ;
}
#element {
border: 0;
padding: 1px ;
}
#element.normal.normal {
background-color: @background;
text-color: @foreground;
}
#element.normal.urgent {
background-color: @urgent-background;
text-color: @urgent-foreground;
}
#element.normal.active {
background-color: @active-background;
text-color: @foreground;
}
#element.selected.normal {
background-color: @selected-background;
text-color: @foreground;
}
#element.selected.urgent {
background-color: @selected-urgent-background;
text-color: @foreground;
}
#element.selected.active {
background-color: @selected-active-background;
text-color: @foreground;
}
#element.alternate.normal {
background-color: @background;
text-color: @foreground;
}
#element.alternate.urgent {
background-color: @urgent-background;
text-color: @foreground;
}
#element.alternate.active {
background-color: @active-background;
text-color: @foreground;
}
#scrollbar {
width: 2px ;
border: 0;
handle-width: 8px ;
padding: 0;
}
#sidebar {
border: 2px dash 0px 0px ;
border-color: @separatorcolor;
}
#button.selected {
background-color: @selected-background;
text-color: @foreground;
}
#inputbar {
spacing: 0;
text-color: @foreground;
padding: 1px ;
}
#case-indicator {
spacing: 0;
text-color: @foreground;
}
#entry {
spacing: 0;
text-color: @foreground;
}
#prompt {
spacing: 0;
text-color: @foreground;
}
#inputbar {
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
}
#textbox-prompt-colon {
expand: false;
str: ":";
margin: 0px 0.3em 0em 0em ;
text-color: @foreground;
}