@@ -0,0 +1,4 @@ | |||
# /etc/Xresources | |||
Xcursor.theme: breeze | |||
Xcursor.size: 16 |
@@ -0,0 +1,9 @@ | |||
# /etc/bash/bashrc | |||
[ -e /etc/profile ] && source /etc/profile | |||
shopt -s checkwinsize | |||
shopt -s no_empty_cmd_completion | |||
shopt -s histappend | |||
unset sh |
@@ -0,0 +1,508 @@ | |||
;; /etc/emacs/default.el | |||
;; When Emacs is opened we should first adjust the appearance to what we | |||
;; desire so that while configurations are being parsed we do not see the | |||
;; default theme. We will disable various tool bars before they | |||
;; initialize, then set the theme and font appearance. | |||
(when (fboundp 'menu-bar-mode) (menu-bar-mode -1)) | |||
(when (fboundp 'scroll-bar-mode) (scroll-bar-mode -1)) | |||
(when (fboundp 'tool-bar-mode) (tool-bar-mode -1)) | |||
(load-theme 'tango-dark) | |||
(set-face-attribute | |||
'default nil | |||
:family "Monospace" :weight 'normal | |||
:width 'normal :height 96) | |||
;; In this section we will set some ideal default behaviors such as | |||
;; inhibiting any unwanted initial buffers, forcing utf-8 encoding, | |||
;; showing column numbers in the mode line, enabling the visual-bell | |||
;; which disables the audible bell, and moving custom configuration | |||
;; to another file as to not append this to the bottom of this file. | |||
(setq | |||
;; Misc | |||
initial-scratch-message nil | |||
inhibit-splash-screen t | |||
inhibit-startup-buffer-menu t | |||
custom-file "~/.emacs.d/custom.el" | |||
;; Encoding | |||
prefer-coding-system 'utf-8 | |||
set-default-coding-systems 'utf-8 | |||
set-language-environment "UTF-8" | |||
set-locale-environment "en_US.UTF-8") | |||
;; Whenever possible, we should not load custom configurations until | |||
;; after Emacs has finished initializing. This section relies on the | |||
;; 'after-init-hook' to accomplish this. | |||
(add-hook | |||
'after-init-hook | |||
(lambda() | |||
(add-hook 'before-save-hook 'delete-trailing-whitespace) | |||
(add-hook 'lisp-mode-hook | |||
(lambda() | |||
(add-hook 'before-save-hook | |||
(lambda() (untabify (point-min)(point-max)))) | |||
(linum-mode))) | |||
(add-hook 'prog-mode-hook | |||
(lambda() | |||
(linum-mode))) | |||
(add-hook 'text-mode-hook | |||
(lambda() | |||
(add-hook 'before-save-hook | |||
(lambda() (untabify (point-min)(point-max)))) | |||
(linum-mode))) | |||
(add-hook 'c-mode-hook | |||
(lambda() | |||
(add-to-list 'auto-mode-alist '("\\.h\\'" . c-mode)) | |||
(setq indent-tabs-mode 1))) | |||
(add-hook 'c++-mode-hook | |||
(lambda() | |||
(add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode)) | |||
(setq indent-tabs-mode 1))) | |||
(add-hook 'python-mode-hook | |||
(lambda() | |||
(add-hook 'before-save-hook | |||
(lambda() (untabify (point-min)(point-max)))) | |||
(linum-mode))) | |||
(setq | |||
;; Cut/Paste | |||
require-final-newline t | |||
save-interprogram-paste-before-kill t | |||
select-enable-primary nil | |||
;; Display | |||
column-number-mode t | |||
visible-bell t | |||
;; Indentation | |||
c-basic-offset 4 | |||
cperl-indent-level 4 | |||
js-indent-level 4 | |||
tab-width 4 | |||
indent-tabs-mode nil | |||
;; Mouse | |||
mouse-wheel-follow-mouse 't | |||
mouse-wheel-progressive-speed nil | |||
mouse-wheel-scroll-amount '(3 ((shift) . 3)) | |||
mouse-yank-at-point t | |||
;; Scrolling | |||
auto-window-vscroll nil | |||
scroll-conservatively 101 | |||
scroll-down-aggressively 0.0 | |||
scroll-margin 0 | |||
scroll-preserve-screen-position 1 | |||
scroll-step 1 | |||
scroll-up-aggressively 0.0) | |||
;; Shorter y/n prompts | |||
(fset 'yes-or-no-p 'y-or-n-p) | |||
;; Globally enable word-wrap | |||
(global-visual-line-mode t) | |||
;; Highlight matching parenthesis | |||
(show-paren-mode t) | |||
;; Enable mouse support in terminal | |||
(xterm-mouse-mode t) | |||
;; Environment Variables | |||
(setenv "EDITOR" "emacsclient") | |||
(setenv "GIT_EDITOR" "emacsclient") | |||
(setenv "GOPATH" (getenv "GOPATH")) | |||
(setenv "MANPATH" (getenv "MANPATH")) | |||
(setenv "PATH" (getenv "PATH")) | |||
(setenv "PROMPT_COMMAND" "") | |||
(setenv "SHELL" (getenv "SHELL")) | |||
(setenv "TERM" (getenv "TERM")) | |||
;; Buffers | |||
(global-set-key (kbd "C-x x") 'kill-buffer-and-window) | |||
(global-set-key (kbd "<C-tab>") 'next-buffer) | |||
(global-set-key (kbd "<C-iso-lefttab>") 'previous-buffer) | |||
(global-set-key (kbd "M--") (lambda() (interactive) | |||
(split-window-vertically) | |||
(other-window 1 nil) | |||
(switch-to-next-buffer))) | |||
(global-set-key (kbd "M-=") (lambda() (interactive) | |||
(split-window-horizontally) | |||
(other-window 1 nil) | |||
(switch-to-next-buffer))) | |||
;; Comment or uncomment the highlighted region | |||
(global-set-key (kbd "C-c c") 'comment-or-uncomment-region) | |||
;; Mouse | |||
(global-set-key (kbd "<mouse-4>") (lambda() (interactive) | |||
(scroll-down 3))) | |||
(global-set-key (kbd "<mouse-5>") (lambda() (interactive) | |||
(scroll-up 3))) | |||
;; Movement | |||
(global-set-key (kbd "<M-down>") 'windmove-down) | |||
(global-set-key (kbd "<M-left>") 'windmove-left) | |||
(global-set-key (kbd "<M-right>") 'windmove-right) | |||
(global-set-key (kbd "<M-up>") 'windmove-up) | |||
(global-set-key (kbd "C-c <down>") 'windmove-down) | |||
(global-set-key (kbd "C-c <left>") 'windmove-left) | |||
(global-set-key (kbd "C-c <right>") 'windmove-right) | |||
(global-set-key (kbd "C-c <up>") 'windmove-up) | |||
;; Autoload custom file | |||
(if (file-exists-p custom-file) | |||
(load custom-file) | |||
(write-region "" nil custom-file)))) | |||
;; Package management in Emacs has a few hiccups and this section is | |||
;; meant to mitigate them. We will set the repositories to use and the | |||
;; order in which to use them so that we are using stable packages | |||
;; whenever possible. Additionally, we will install use-package if it is | |||
;; not already present and set 'ensure' on all future use-package | |||
;; declarations. | |||
(require 'package) | |||
(setq package-user-dir "~/.emacs.d/pkg/" | |||
package-archives | |||
'(("GNU ELPA" . "http://elpa.gnu.org/packages/") | |||
("MELPA Stable" . "https://stable.melpa.org/packages/") | |||
("MELPA" . "https://melpa.org/packages/")) | |||
package-archive-priorities | |||
'(("MELPA Stable" . 3) | |||
("GNU ELPA" . 2) | |||
("MELPA" . 1))) | |||
(package-initialize) | |||
(unless (package-installed-p 'use-package) | |||
(package-refresh-contents) | |||
(package-install 'use-package)) | |||
(require 'use-package) | |||
(setq use-package-always-ensure t) | |||
;; This section contains use-package definitions for any package that | |||
;; currently ships with Emacs. If the package does not exist such as | |||
;; with older versions, they will be installed. Extra consideration has | |||
;; been taken to only apply settings when a package is used as to reduce | |||
;; the time needed to initialize Emacs. | |||
(use-package async | |||
:config (async-bytecomp-package-mode '(all))) | |||
(use-package auto-compile | |||
:config | |||
(auto-compile-on-load-mode) | |||
(auto-compile-on-save-mode)) | |||
(use-package auto-dictionary) | |||
(use-package eshell | |||
:config | |||
(setq eshell-cmpl-cycle-completions nil | |||
eshell-error-if-no-glob t | |||
eshell-hist-ignoredups t | |||
eshell-history-size 4096 | |||
eshell-prefer-lisp-functions t | |||
eshell-save-history-on-exit t | |||
eshell-scroll-to-bottom-on-input nil | |||
eshell-scroll-to-bottom-on-output nil | |||
eshell-scroll-show-maximum-output nil | |||
eshell-visual-commands | |||
'("alsamixer" "htop" "top" "nano" "vi" "vim" "less" "ssh" "tail" | |||
"watch") | |||
eshell-prompt-regexp "^[^#$\n]*[#$] " | |||
eshell-prompt-function | |||
(lambda nil | |||
(concat | |||
"[" (user-login-name) "@" (system-name) " " | |||
(if (string= (eshell/pwd) (getenv "HOME")) | |||
"~" (eshell/basename (eshell/pwd))) | |||
"]" | |||
(if (= (user-uid) 0) "# " "$ ")))) | |||
(defun eshell/clear() | |||
(interactive) | |||
(recenter 0)) | |||
(defun eshell-new() | |||
"Open a new instance of eshell." | |||
(interactive) | |||
(eshell 'N))) | |||
(use-package eww | |||
:config | |||
(setq browse-url-browser-function 'eww-browse-url | |||
shr-blocked-images "") | |||
(defun eww-toggle-images() | |||
"Toggle blocking images in eww." | |||
(interactive) | |||
(if (bound-and-true-p shr-blocked-images) | |||
(setq shr-blocked-images nil) | |||
(setq shr-blocked-images "")) | |||
(eww-reload)) | |||
(defun eww-new() | |||
"Open a new instance of eww." | |||
(interactive) | |||
(let ((url (read-from-minibuffer "Enter URL or keywords: "))) | |||
(switch-to-buffer (generate-new-buffer "*eww*")) | |||
(eww-mode) | |||
(eww url)))) | |||
(use-package gnus | |||
:config | |||
(gnus-add-configuration | |||
'(article | |||
(horizontal 1.0 | |||
(vertical 25 (group 1.0)) | |||
(vertical 1.0 | |||
(summary 0.25 point) | |||
(article 1.0))))) | |||
(gnus-add-configuration | |||
'(summary | |||
(horizontal 1.0 | |||
(vertical 25 (group 1.0)) | |||
(vertical 1.0 (summary 1.0 point)))))) | |||
(use-package ibuffer | |||
:bind ("C-x C-b" . ibuffer) | |||
:config | |||
(add-hook 'ibuffer-hook | |||
(lambda() | |||
(ibuffer-do-sort-by-alphabetic) | |||
(ibuffer-do-sort-by-major-mode) | |||
(ibuffer-auto-mode t)))) | |||
(use-package scratch | |||
:config | |||
(defun scratch-new() | |||
"Open a new scratch buffer." | |||
(interactive) | |||
(switch-to-buffer (generate-new-buffer "*scratch*")) | |||
(lisp-mode))) | |||
(use-package server | |||
:bind ("C-x C-c" . server-stop) | |||
:config (unless (server-running-p)(server-start)) | |||
(defun server-kill() | |||
"Delete current Emacs server, then kill Emacs" | |||
(interactive) | |||
(if (y-or-n-p "Kill Emacs without saving? ") | |||
(kill-emacs))) | |||
(defun server-stop() | |||
"Prompt to save buffers, then kill Emacs." | |||
(interactive) | |||
(if (y-or-n-p "Quit Emacs? ") | |||
(save-buffers-kill-emacs))) | |||
(defun server-update() | |||
"Refresh package contents, then update all packages." | |||
(interactive) | |||
(package-initialize) | |||
(unless package-archive-contents | |||
(package-refresh-contents)) | |||
(package-utils-upgrade-all))) | |||
(use-package xclip | |||
:config (xclip-mode 1)) | |||
;; This section defines additional packages which typically do not ship | |||
;; with emacs that will be installed and configured when issued. | |||
(use-package circe | |||
:config | |||
(if (file-exists-p "~/.emacs.d/circe.el") | |||
(load-file "~/.emacs.d/circe.el")) | |||
(setq circe-default-part-message "" | |||
circe-default-quit-message "" | |||
circe-format-server-topic "*** Topic change by {userhost}: {topic-diff}" | |||
circe-reduce-lurker-spam t | |||
circe-use-cycle-completion t | |||
lui-fill-type nil | |||
lui-flyspell-alist '((".*" "american")) | |||
lui-flyspell-p t | |||
lui-time-stamp-format "%H:%M:%S" | |||
lui-time-stamp-position 'left-margin) | |||
(require 'circe-chanop) | |||
(enable-circe-color-nicks) | |||
(defun my-circe-set-margin() (setq left-margin-width 9)) | |||
(setf (cdr (assoc 'continuation fringe-indicator-alist)) nil) | |||
(defun my-lui-setup() | |||
(setq fringes-outside-margins t | |||
left-margin-width 9 | |||
word-wrap t | |||
wrap-prefix "")) | |||
(defun my-circe-prompt() | |||
(lui-set-prompt | |||
(concat (propertize | |||
(concat (buffer-name) ">") | |||
'face 'circe-prompt-face) " "))) | |||
(defun my-circe-message-option-chanserv (nick user host command args) | |||
(when (and (string= "ChanServ" nick) | |||
(string-match "^\\[#.+?\\]" (cadr args))) | |||
'((dont-display . t)))) | |||
(add-hook 'circe-chat-mode-hook 'my-circe-prompt) | |||
(add-hook 'circe-message-option-functions 'my-circe-message-option-chanserv) | |||
(add-hook 'lui-mode-hook (lambda() (my-lui-setup) (my-circe-set-margin)))) | |||
(use-package cmake-ide | |||
:config (cmake-ide-setup)) | |||
(use-package company | |||
:config | |||
(add-hook 'prog-mode-hook 'company-mode) | |||
(add-hook 'text-mode-hook 'company-mode)) | |||
(use-package company-irony | |||
:config (add-to-list 'company-backends 'company-irony)) | |||
(use-package company-irony-c-headers | |||
:config | |||
(add-to-list 'company-backends | |||
'(company-irony-c-headers company-irony))) | |||
(use-package counsel | |||
:bind (("<f1> f" . counsel-describe-function) | |||
("<f1> l" . counsel-find-library) | |||
("<f1> v" . counsel-describe-variable) | |||
("<f2> i" . counsel-info-lookup-symbol) | |||
("<f2> u" . counsel-unicode-char) | |||
("C-S-o" . counsel-rhythmbox) | |||
("C-c g" . counsel-git) | |||
("C-c j" . counsel-git-grep) | |||
("C-c l" . counsel-ag) | |||
("C-r" . counsel-minibuffer-history) | |||
("C-x C-f" . counsel-find-file) | |||
("C-x l" . counsel-locate) | |||
("M-x" . counsel-M-x))) | |||
(use-package diff-hl | |||
:config | |||
(add-hook 'prog-mode-hook 'diff-hl-mode) | |||
(add-hook 'text-mode-hook 'diff-hl-mode)) | |||
(use-package elfeed | |||
:bind ("C-x w" . elfeed) | |||
:config | |||
(setq elfeed-search-filter "@1-week-ago +unread " | |||
url-queue-timeout 30) | |||
(if (file-exists-p "~/.emacs.d/elfeed.el") | |||
(load-file "~/.emacs.d/elfeed.el"))) | |||
(use-package eww-lnum | |||
:config | |||
(define-key eww-mode-map "f" 'eww-lnum-follow) | |||
(define-key eww-mode-map "F" 'eww-lnum-universal)) | |||
(use-package flycheck | |||
:config (add-hook 'prog-mode-hook 'flycheck-mode)) | |||
(use-package flymake) | |||
(use-package flyspell | |||
:config | |||
(add-hook 'flyspell-mode-hook (auto-dictionary-mode 1)) | |||
(add-hook 'markdown-mode-hook 'flyspell-mode) | |||
(add-hook 'prog-mode-hook 'flyspell-prog-mode) | |||
(add-hook 'text-mode-hook 'flyspell-mode)) | |||
(use-package go-mode | |||
:config | |||
(add-hook 'before-save-hook 'gofmt-before-save) | |||
(add-hook 'go-mode-hook | |||
(lambda() | |||
(setq tab-width 4 | |||
indent-tabs-mode 1)))) | |||
(use-package highlight-indent-guides | |||
:config | |||
(add-hook 'prog-mode-hook 'highlight-indent-guides-mode) | |||
(setq highlight-indent-guides-method 'character)) | |||
(use-package irony | |||
:config | |||
(add-hook 'c++-mode-hook 'irony-mode) | |||
(add-hook 'c-mode-hook 'irony-mode) | |||
(add-hook 'objc-mode-hook 'irony-mode) | |||
(add-hook 'irony-mode-hook 'irony-cdb-autosetup-compile-options) | |||
(define-key irony-mode-map [remap completion-at-point] 'counsel-irony) | |||
(define-key irony-mode-map [remap complete-symbol] 'counsel-irony) | |||
(setq irony-additional-clang-options '("-std=c++14"))) | |||
(use-package ivy | |||
:bind (("C-c C-r" . ivy-resume) | |||
("<f6>" . ivy-resume)) | |||
:config | |||
(ivy-mode 1) | |||
(setq ivy-use-virtual-buffers t | |||
enable-recursive-minibuffers t)) | |||
(use-package magit) | |||
(use-package no-littering | |||
:config | |||
(setq auto-save-file-name-transforms | |||
`((".*" ,(no-littering-expand-var-file-name "auto-save/") t)))) | |||
(use-package nov | |||
:config (add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode))) | |||
(use-package pdf-tools) | |||
(use-package rainbow-delimiters | |||
:config | |||
(add-hook 'markdown-mode-hook 'rainbow-delimiters-mode) | |||
(add-hook 'prog-mode-hook 'rainbow-delimiters-mode) | |||
(add-hook 'text-mode-hook 'rainbow-delimiters-mode)) | |||
(use-package ranger) | |||
(use-package smartparens | |||
:config | |||
(add-hook 'markdown-mode-hook 'smartparens-mode) | |||
(add-hook 'prog-mode-hook 'smartparens-mode) | |||
(add-hook 'text-mode-hook 'smartparens-mode) | |||
(setq sp-highlight-pair-overlay nil | |||
sp-highlight-wrap-overlay nil | |||
sp-highlight-wrap-tag-overlay nil)) | |||
(use-package swiper | |||
:bind ("C-s" . swiper)) | |||
(use-package undo-tree | |||
:config (global-undo-tree-mode)) |
@@ -0,0 +1,222 @@ | |||
# /etc/i3/config | |||
### Startup ###################################### | |||
## Disable DPMS | |||
exec --no-startup-id xset s off -dpms | |||
## i3wm modifier key | |||
set $mod Mod4 | |||
## Applications | |||
bindsym $mod+d exec --no-startup-id dmenu_run | |||
bindsym $mod+Return exec st | |||
### Appearance ################################### | |||
## Font | |||
font pango:Noto Mono Regular 9.5 | |||
## Taskbar | |||
bar { | |||
position top | |||
status_command i3status | |||
colors { | |||
background #333333 | |||
statusline #eeeeee | |||
separator #eeeeee | |||
focused_workspace #eeeeee #00894e | |||
active_workspace #eeeeee #777777 | |||
inactive_workspace #eeeeee #333333 | |||
urgent_workspace #eeeeee #b22222 | |||
} | |||
} | |||
## Colors | |||
exec --no-startup-id xsetroot -solid '#333333' | |||
client.background #333333 | |||
client.focused #00894e #00894e #eeeeee #30f277 #00894e | |||
client.focused_inactive #333333 #333333 #eeeeee #888888 #333333 | |||
client.placeholder #333333 #333333 #eeeeee #333333 #333333 | |||
client.unfocused #333333 #333333 #888888 #888888 #333333 | |||
client.urgent #b22222 #b22222 #eeeeee #ff5454 #b22222 | |||
### System ####################################### | |||
## Reload | |||
set $Config Reload i3 config (r), Live restart of i3 (Shift+r) | |||
bindsym $mod+Shift+r mode "$Config" | |||
mode "$Config" { | |||
bindsym r reload | |||
bindsym Shift+r restart | |||
bindsym Escape mode "default" | |||
} | |||
## i3lock | |||
set $Locker xset s 10 dpms 10 && i3lock -c 333333 -n && xset s off -dpms | |||
## Menu | |||
set $System Lock (l), Logout (e), Reboot (r), Shutdown (s) | |||
bindsym $mod+Home mode "$System" | |||
mode "$System" { | |||
bindsym l exec --no-startup-id $Locker, mode "default" | |||
bindsym e exec --no-startup-id i3-msg exit, mode "default" | |||
bindsym r exec --no-startup-id reboot, mode "default" | |||
bindsym s exec --no-startup-id poweroff -i, mode "default" | |||
bindsym Escape mode "default" | |||
} | |||
### Display ###################################### | |||
## Auto-enable/disable displays when connected | |||
# exec --no-startup-id \ | |||
# while :; do \ | |||
# Displays=$(xrandr | grep 'connected' | awk '{print $1}');\ | |||
# for display in $Displays; do \ | |||
# if [ $(xrandr | grep $display | awk '{print $2}') == "connected" ]; then \ | |||
# xrandr --output $display --auto; \ | |||
# fi; \ | |||
# done; \ | |||
# sleep 10; \ | |||
# done | |||
#### Keybinds #################################### | |||
## Window splitting | |||
bindsym $mod+h split h | |||
bindsym $mod+v split v | |||
## Fullscreen focused container | |||
bindsym $mod+f fullscreen toggle | |||
## Kill focused window | |||
bindsym $mod+Shift+q kill | |||
## Cycle frame layout | |||
bindsym $mod+s layout stacking | |||
bindsym $mod+w layout tabbed | |||
bindsym $mod+e layout toggle split | |||
## Change focus | |||
bindsym $mod+j focus left | |||
bindsym $mod+k focus down | |||
bindsym $mod+l focus up | |||
bindsym $mod+semicolon focus right | |||
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 | |||
bindsym $mod+Shift+Left move left | |||
bindsym $mod+Shift+Down move down | |||
bindsym $mod+Shift+Up move up | |||
bindsym $mod+Shift+Right move right | |||
## Switch to workspace | |||
bindsym $mod+1 workspace 1 | |||
bindsym $mod+2 workspace 2 | |||
bindsym $mod+3 workspace 3 | |||
bindsym $mod+4 workspace 4 | |||
bindsym $mod+5 workspace 5 | |||
bindsym $mod+6 workspace 6 | |||
bindsym $mod+7 workspace 7 | |||
bindsym $mod+8 workspace 8 | |||
bindsym $mod+9 workspace 9 | |||
bindsym $mod+0 workspace 10 | |||
## Move focused container to workspace | |||
bindsym $mod+Shift+1 move container to workspace 1 | |||
bindsym $mod+Shift+2 move container to workspace 2 | |||
bindsym $mod+Shift+3 move container to workspace 3 | |||
bindsym $mod+Shift+4 move container to workspace 4 | |||
bindsym $mod+Shift+5 move container to workspace 5 | |||
bindsym $mod+Shift+6 move container to workspace 6 | |||
bindsym $mod+Shift+7 move container to workspace 7 | |||
bindsym $mod+Shift+8 move container to workspace 8 | |||
bindsym $mod+Shift+9 move container to workspace 9 | |||
bindsym $mod+Shift+0 move container to workspace 10 | |||
## Focus the parent container | |||
bindsym $mod+a focus parent | |||
## Drag floating windows with Mouse+$mod | |||
floating_modifier $mod | |||
## Toggle floating on focused frame | |||
bindsym $mod+Shift+space floating toggle | |||
## Change focus between tiling / floating windows | |||
bindsym $mod+space focus mode_toggle | |||
## Floating rules | |||
for_window [window_role="pop-up"] floating enable | |||
## Resize | |||
bindsym $mod+r mode "resize" | |||
mode "resize" { | |||
bindsym j resize shrink width 10 px or 10 ppt | |||
bindsym k resize grow height 10 px or 10 ppt | |||
bindsym l resize shrink height 10 px or 10 ppt | |||
bindsym semicolon resize grow width 10 px or 10 ppt | |||
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 | |||
bindsym Escape mode "default" | |||
} | |||
#### Multimedia ################################## | |||
## Screenshot (scrot) | |||
bindsym Print exec --no-startup-id \ | |||
scrot $HOME/Pictures/`date +%Y-%m-%d_%H:%M:%S`.png | |||
bindsym $mod+Print exec --no-startup-id \ | |||
scrot -u $HOME/Pictures/`date +%Y-%m-%d_%H:%M:%S`.png | |||
bindsym Shift+Print --release exec --no-startup-id \ | |||
scrot -s $HOME/Pictures/`date +%Y-%m-%d_%H:%M:%S`.png | |||
## Audio (Alsa) | |||
# bindsym XF86AudioRaiseVolume exec --no-startup-id amixer set Master 5+ | |||
# bindsym XF86AudioLowerVolume exec --no-startup-id amixer set Master 5- | |||
# bindsym XF86AudioMute exec --no-startup-id amixer set Master toggle | |||
## Audio (PulseAudio) | |||
# bindsym XF86AudioRaiseVolume exec --no-startup-id \ | |||
# pactl set-sink-volume @DEFAULT_SINK@ +5% | |||
# bindsym XF86AudioLowerVolume exec --no-startup-id \ | |||
# pactl set-sink-volume @DEFAULT_SINK@ -5% | |||
# bindsym XF86AudioMute exec --no-startup-id \ | |||
# pactl set-sink-mute @DEFAULT_SINK@ toggle | |||
# bindsym XF86AudioPlay exec --no-startup-id pactl play-pause | |||
# bindsym XF86AudioPause exec --no-startup-id pactl pause | |||
# bindsym XF86AudioNext exec --no-startup-id pactl next | |||
# bindsym XF86AudioPrev exec --no-startup-id pactl previous | |||
## Audio (Sndio) | |||
# bindsym XF86AudioRaiseVolume exec --no-startup-id mixerctl | |||
# bindsym XF86AudioLowerVolume exec --no-startup-id mixerctl | |||
# bindsym XF86AudioMute \ | |||
# exec --no-startup-id mixerctl -t outputs.master.mute | |||
## Brightness (brightnessctl) | |||
# bindsym XF86MonBrightnessUp exec --no-startup-id brightnessctl set 5%+ | |||
# bindsym XF86MonBrightnessDown exec --no-startup-id brightnessctl set 5%- | |||
## Brightness (xbacklight) | |||
# bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 15 | |||
# bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 15 |
@@ -0,0 +1,47 @@ | |||
# /etc/i3status.conf | |||
general { | |||
colors = true | |||
interval = 5 | |||
} | |||
order += "ipv6" | |||
order += "wireless _first_" | |||
order += "ethernet _first_" | |||
order += "volume master" | |||
#order += "disk /" | |||
order += "battery all" | |||
order += "load" | |||
order += "tztime local" | |||
wireless _first_ { | |||
format_up = "W: (%quality at %essid) %ip" | |||
format_down = "W: down" | |||
} | |||
ethernet _first_ { | |||
format_up = "E: %ip (%speed)" | |||
format_down = "E: down" | |||
} | |||
volume master { | |||
format = "🔊: %volume" | |||
format_muted = "🔈: %volume" | |||
device = "default" | |||
} | |||
disk "/" { | |||
format = "%avail" | |||
} | |||
battery all { | |||
format = "%status %percentage %remaining" | |||
} | |||
tztime local { | |||
format = "%Y-%m-%d %H:%M:%S" | |||
} | |||
load { | |||
format = "%1min" | |||
} |
@@ -0,0 +1,19 @@ | |||
# /etc/portage/make.conf | |||
# System | |||
CPU_FLAGS_X86="aes avx avx2 fma3 mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3" | |||
INPUT_DEVICES="libinput" | |||
L10N="en-US" | |||
LINGUAS="en_US" | |||
VIDEO_CARDS="Video_Cards" | |||
# Portage | |||
GENTOO_MIRRORS="http://distfiles.gentoo.org" | |||
PORTDIR="/usr/portage" | |||
DISTDIR="$PORTDIR/distfiles" | |||
PKGDIR="$PORTDIR/packages" | |||
# Compilation | |||
MAKEOPTS="Make_Opts" | |||
CFLAGS="-O3 -march=native -pipe" | |||
CXXFLAGS="$CFLAGS" |
@@ -0,0 +1,20 @@ | |||
# /etc/portage/package.accept_keywords | |||
## General | |||
app-editors/emacs | |||
dev-lang/go | |||
dev-util/bcc | |||
lxqt-base/* | |||
media-gfx/lximage-qt | |||
sys-devel/binutils | |||
sys-devel/gcc | |||
sys-kernel/gentoo-sources | |||
sys-kernel/linux-headers | |||
x11-misc/obconf-qt | |||
x11-misc/pcmanfm-qt | |||
## amd64 | |||
app-emulation/wine-mono ~amd64 | |||
app-emulation/wine-staging ~amd64 | |||
net-misc/cmst ~amd64 | |||
sys-firmware/nvidia-firmware ~amd64 |
@@ -0,0 +1 @@ | |||
# /etc/portage/package.env |
@@ -0,0 +1,4 @@ | |||
# /etc/portage/package.license | |||
app-emulation/virtualbox-bin PUEL | |||
www-client/google-chrome google-chrome |
@@ -0,0 +1,14 @@ | |||
# /etc/portage/package.use/default | |||
*/* -aqua -avahi -bindist -cairo -doc -games -gnome-keyring -gtk -gtk2 -handbook -introspection -kdesu -kwallet -llvm -multilib -offensive -qt4 -sslv3 -static -static-libs -systemd -tls-heartbeat -wayland | |||
## Base | |||
*/* deblob gnutls minimal threads unicode | |||
## Minimal | |||
*/* dbus bzip2 zlib | |||
## Desktop | |||
# */* alsa bluetooth pulseaudio | |||
# */* ffmpeg gif imagemagick jpeg jpeg2k motif png svg tiff xpm | |||
# */* X egl gles openal opengl sdl sdl2 vaapi vdpau xft |
@@ -0,0 +1,124 @@ | |||
# /etc/portage/package.use/multilib | |||
# app-accessibility/at-spi2-atk abi_x86_32 | |||
# app-accessibility/at-spi2-core abi_x86_32 | |||
# app-arch/bzip2 abi_x86_32 | |||
# app-emulation/wine-gecko abi_x86_32 | |||
# dev-db/sqlite abi_x86_32 | |||
# dev-libs/atk abi_x86_32 | |||
# dev-libs/expat abi_x86_32 | |||
# dev-libs/glib abi_x86_32 | |||
# dev-libs/gmp abi_x86_32 | |||
# dev-libs/icu abi_x86_32 | |||
# dev-libs/libcroco abi_x86_32 | |||
# dev-libs/libffi abi_x86_32 | |||
# dev-libs/libgcrypt abi_x86_32 | |||
# dev-libs/libgpg-error abi_x86_32 | |||
# dev-libs/libpcre abi_x86_32 | |||
# dev-libs/libpthread-stubs abi_x86_32 | |||
# dev-libs/libtasn1 abi_x86_32 | |||
# dev-libs/libunistring abi_x86_32 | |||
# dev-libs/libxml2 abi_x86_32 | |||
# dev-libs/libxslt abi_x86_32 | |||
# dev-libs/lzo abi_x86_32 | |||
# dev-libs/nettle abi_x86_32 | |||
# dev-libs/nspr abi_x86_32 | |||
# dev-libs/nss abi_x86_32 | |||
# dev-libs/openssl abi_x86_32 | |||
# dev-libs/wayland abi_x86_32 | |||
# dev-util/pkgconfig abi_x86_32 | |||
# gnome-base/librsvg abi_x86_32 | |||
# media-gfx/graphite2 abi_x86_32 | |||
# media-libs/alsa-lib abi_x86_32 | |||
# media-libs/fontconfig abi_x86_32 | |||
# media-libs/freeglut abi_x86_32 | |||
# media-libs/freetype abi_x86_32 | |||
# media-libs/glu abi_x86_32 | |||
# media-libs/harfbuzz abi_x86_32 | |||
# media-libs/jasper abi_x86_32 | |||
# media-libs/lcms abi_x86_32 | |||
# media-libs/libjpeg-turbo abi_x86_32 | |||
# media-libs/libpng abi_x86_32 | |||
# media-libs/libsndfile abi_x86_32 | |||
# media-libs/libtxc_dxtn abi_x86_32 | |||
# media-libs/mesa abi_x86_32 | |||
# media-libs/openal abi_x86_32 | |||
# media-libs/tiff abi_x86_32 | |||
# media-plugins/alsa-plugins abi_x86_32 | |||
# media-sound/pulseaudio abi_x86_32 | |||
# net-dns/libidn2 abi_x86_32 | |||
# net-libs/gnutls abi_x86_32 | |||
# net-libs/libasyncns abi_x86_32 | |||
# net-misc/curl abi_x86_32 | |||
# sys-apps/attr abi_x86_32 | |||
# sys-apps/dbus abi_x86_32 | |||
# sys-apps/tcp-wrappers abi_x86_32 | |||
# sys-apps/util-linux abi_x86_32 | |||
# sys-devel/gettext abi_x86_32 | |||
# sys-fs/eudev abi_x86_32 | |||
# sys-fs/udev abi_x86_32 | |||
# sys-libs/binutils-libs abi_x86_32 | |||
# sys-libs/gpm abi_x86_32 | |||
# sys-libs/libcap abi_x86_32 | |||
# sys-libs/ncurses abi_x86_32 | |||
# sys-libs/readline abi_x86_32 | |||
# sys-libs/zlib abi_x86_32 | |||
# virtual/glu abi_x86_32 | |||
# virtual/jpeg abi_x86_32 | |||
# virtual/libffi abi_x86_32 | |||
# virtual/libiconv abi_x86_32 | |||
# virtual/libintl abi_x86_32 | |||
# virtual/libudev abi_x86_32 x32 | |||
# virtual/opengl abi_x86_32 | |||
# virtual/pkgconfig abi_x86_32 | |||
# x11-libs/cairo abi_x86_32 | |||
# x11-libs/gdk-pixbuf abi_x86_32 | |||
# x11-libs/libICE abi_x86_32 | |||
# x11-libs/libSM abi_x86_32 | |||
# x11-libs/libX11 abi_x86_32 | |||
# x11-libs/libXScrnSaver abi_x86_32 | |||
# x11-libs/libXau abi_x86_32 | |||
# x11-libs/libXcomposite abi_x86_32 | |||
# x11-libs/libXcursor abi_x86_32 | |||
# x11-libs/libXdamage abi_x86_32 | |||
# x11-libs/libXdmcp abi_x86_32 | |||
# x11-libs/libXext abi_x86_32 | |||
# x11-libs/libXfixes abi_x86_32 | |||
# x11-libs/libXft abi_x86_32 | |||
# x11-libs/libXi abi_x86_32 | |||
# x11-libs/libXinerama abi_x86_32 | |||
# x11-libs/libXmu abi_x86_32 | |||
# x11-libs/libXrandr abi_x86_32 | |||
# x11-libs/libXrender abi_x86_32 | |||
# x11-libs/libXt abi_x86_32 | |||
# x11-libs/libXtst abi_x86_32 | |||
# x11-libs/libXxf86vm abi_x86_32 | |||
# x11-libs/libdrm abi_x86_32 | |||
# x11-libs/libpciaccess abi_x86_32 | |||
# x11-libs/libva abi_x86_32 | |||
# x11-libs/libva-intel-driver abi_x86_32 | |||
# x11-libs/libvdpau abi_x86_32 | |||
# x11-libs/libxcb abi_x86_32 | |||
# x11-libs/libxshmfence abi_x86_32 | |||
# x11-libs/pango abi_x86_32 | |||
# x11-libs/pixman abi_x86_32 | |||
# x11-proto/compositeproto abi_x86_32 | |||
# x11-proto/damageproto abi_x86_32 | |||
# x11-proto/dri2proto abi_x86_32 | |||
# x11-proto/dri3proto abi_x86_32 | |||
# x11-proto/fixesproto abi_x86_32 | |||
# x11-proto/glproto abi_x86_32 | |||
# x11-proto/inputproto abi_x86_32 | |||
# x11-proto/kbproto abi_x86_32 | |||
# x11-proto/presentproto abi_x86_32 | |||
# x11-proto/randrproto abi_x86_32 | |||
# x11-proto/recordproto abi_x86_32 | |||
# x11-proto/renderproto abi_x86_32 | |||
# x11-proto/scrnsaverproto abi_x86_32 | |||
# x11-proto/xcb-proto abi_x86_32 | |||
# x11-proto/xextproto abi_x86_32 | |||
# x11-proto/xf86bigfontproto abi_x86_32 | |||
# x11-proto/xf86driproto abi_x86_32 | |||
# x11-proto/xf86vidmodeproto abi_x86_32 | |||
# x11-proto/xineramaproto abi_x86_32 | |||
# x11-proto/xproto abi_x86_32 |
@@ -0,0 +1,76 @@ | |||
# /etc/portage/package.use/packages | |||
app-admin/sudo -gcrypt -openssl sendmail | |||
app-arch/zip -bzip2 | |||
app-editors/emacs -athena acl dynamic-loading gtk3 gzip-el inotify libxml2 sound ssl xwidgets | |||
app-editors/vim -X -minimal -perl -python -racket -tcl | |||
app-emulation/qemu usb | |||
app-laptop/laptop-mode-tools acpi | |||
app-misc/screenfetch -X | |||
app-office/libreoffice collada gltf gstreamer gtk mysql pdfimport postgres | |||
app-text/ghostscript-gpl cups | |||
app-text/poppler -qt5 | |||
app-text/xmlto text | |||
dev-games/ogre examples ois | |||
dev-games/openscenegraph truetype | |||
dev-lang/python:2.7 sqlite | |||
dev-libs/libpcre pcre16 | |||
dev-libs/libxml2 icu python | |||
dev-qt/qtcore icu | |||
dev-qt/qtmultimedia gstreamer qml | |||
dev-qt/qtnetwork connman | |||
dev-util/cmake -ncurses -qt5 | |||
dev-util/geany gtk3 vte | |||
dev-vcs/git -gpg | |||
kde-frameworks/kidletime xscreensaver | |||
kde-plasma/kde-cli-tools -X | |||
kde-plasma/kwin multimedia | |||
kde-plasma/systemsettings gtk | |||
lxqt-base/lxqt-meta -oxygen about admin filemanager icons lximage powermanagement sddm | |||
lxqt-base/lxqt-panel clock colorpicker cpuload desktopswitch kbindicator mainmenu mount quicklaunch sensors showdesktop statusnotifier sysstat taskbar tray volume | |||
mail-client/thunderbird lightning system-cairo system-harfbuzz system-icu system-jpeg system-libevent system-libvpx system-sqlite | |||
media-fonts/noto -cjk | |||
media-gfx/blender boost bullet collada colorio cuda cuda cycles dds elbeem game-engine jemalloc openimageio opensubdiv player sndfile valgrind | |||
media-gfx/feh curl exif cinerma xinerama | |||
media-gfx/gimp smp | |||
media-gfx/imagemagick corefonts cxx djvu fontconfig fpx fttw hdri jbig lcms lzma openexr raw opencl truetype webp wmf xml | |||
media-gfx/inkscape latex | |||
media-gfx/pstoedit plotutils | |||
media-libs/harfbuzz icu | |||
media-libs/libpng apng | |||
media-libs/mesa -vaapi gles2 | |||
media-libs/phonon -vlc gstreamer | |||
media-plugins/gst-plugins-meta ogg vorbis | |||
media-sound/cmus aac alsa flac libsamplerate mad mp4 opus oss vorbis wavpack | |||
media-video/ffmpeg aac amr blueray cdio encode gme hevc libass mp3 network ogg openh264 openssl opus rtmp theora vorbis vpx wavpack x264 x265 xvid | |||
media-video/mpv libass libmpv | |||
net-misc/connman bluetooth ethernet iptables openvpn wifi | |||
net-misc/openssh -X | |||
net-vpn/openvpn lz4 lzo plugins | |||
net-wireless/wpa_supplicant -qt5 | |||
sys-apps/openrc -netifrc | |||
sys-auth/consolekit policykit | |||
sys-auth/pambase consolekit | |||
sys-devel/gcc cxx nls nplt | |||
sys-devel/llvm clang | |||
sys-libs/libcxx libcxxabi | |||
sys-libs/zlib minizip | |||
www-client/chromium hangouts proprietary-codecs system-ffmpeg system-icu system-libvpx | |||
www-client/w3m -X | |||
www-plugins/adobe-flash ppapi | |||
x11-base/xorg-drivers libinput | |||
x11-base/xorg-server -minimal | |||
x11-drivers/nvidia-drivers x86_video_abi multilib | |||
x11-drivers/xf86-video-amdgpu glamor | |||
x11-drivers/xf86-video-ati glamor | |||
x11-drivers/xf86-video-intel dri3 sna | |||
x11-drivers/xf86-video-virtualbox dri | |||
x11-libs/cairo xcb | |||
x11-libs/libfm vala | |||
x11-libs/libva -egl | |||
x11-libs/libxcb xkb | |||
x11-misc/dmenu xinerama | |||
x11-misc/i3status filecaps | |||
x11-misc/sddm consolekit | |||
x11-terms/gnome-terminal -gnome-shell -nautilus | |||
x11-terms/rxvt-unicode 256-color blink fading-colors font-styles mousewheel perl pixbuf unicode3 |
@@ -0,0 +1,10 @@ | |||
# /etc/portage/repos.conf/gentoo.conf | |||
[DEFAULT] | |||
main-repo = gentoo | |||
[gentoo] | |||
location = /usr/portage | |||
sync-type = git | |||
sync-uri = https://github.com/gentoo/gentoo.git | |||
auto-sync = yes |
@@ -0,0 +1,21 @@ | |||
# gein-base | |||
app-admin/sudo | |||
app-editors/vim | |||
app-misc/tmux | |||
app-text/aspell | |||
dev-vcs/git | |||
media-fonts/noto | |||
media-libs/alsa-lib | |||
media-sound/alsa-utils | |||
net-misc/dhcpcd | |||
sys-apps/mlocate | |||
sys-apps/pciutils | |||
sys-boot/grub:2 | |||
sys-kernel/gentoo-sources | |||
sys-kernel/linux-firmware | |||
sys-process/htop | |||
virtual/cron | |||
x11-apps/xset | |||
x11-apps/xsetroot | |||
x11-misc/xclip |
@@ -0,0 +1,8 @@ | |||
# gein-i3wm | |||
x11-misc/arandr | |||
x11-misc/dmenu | |||
x11-misc/i3lock | |||
x11-misc/i3status | |||
x11-wm/i3 | |||
x11-terms/st |
@@ -0,0 +1,4 @@ | |||
# gein-laptop | |||
app-laptop/laptop-mode-tools | |||
sys-power/acpilight |
@@ -0,0 +1,11 @@ | |||
# gein-lxqt | |||
kde-frameworks/breeze-icons | |||
kde-plasma/breeze | |||
kde-plasma/breeze-grub | |||
kde-plasma/breeze-gtk | |||
kde-plasma/kwin | |||
kde-plasma/sddm-kcm | |||
lxde-base/lxappearance | |||
lxqt-base/lxqt-meta | |||
net-misc/cmst |
@@ -0,0 +1,36 @@ | |||
# gein-steam | |||
dev-libs/glib:2 | |||
dev-libs/libgcrypt | |||
dev-libs/nspr | |||
dev-libs/nss | |||
gnome-base/gconf | |||
media-libs/alsa-lib | |||
media-libs/fontconfig | |||
media-libs/freetype:2 | |||
media-libs/libjpeg-turbo | |||
media-libs/libogg | |||
media-libs/libpng:1.2 | |||
media-libs/libsdl | |||
media-libs/libtheora | |||
media-libs/libtxc_dxtn | |||
media-libs/libvorbis | |||
media-libs/openal | |||
net-misc/curl | |||
net-print/cups | |||
sys-apps/dbus | |||
virtual/libusb:1 | |||
virtual/opengl | |||
x11-libs/cairo | |||
x11-libs/gdk-pixbuf | |||
x11-libs/gtk+:2 | |||
x11-libs/libX11 | |||
x11-libs/libXScrnSaver | |||
x11-libs/libXext | |||
x11-libs/libXfixes | |||
x11-libs/libXi | |||
x11-libs/libXrandr | |||
x11-libs/libXrender | |||
x11-libs/pango | |||
x11-libs/pixman | |||
x11-misc/xdg-user-dirs |
@@ -0,0 +1,105 @@ | |||
# /etc/profile | |||
# Check for an interactive shell and set umask accordingly. Currently the | |||
# threshold for system-reserved uid/guid's is 200 though you may check | |||
# '/usr/share/doc/setup/uidgid' to confirm this is valid. | |||
case $- in | |||
*i*) INTERACTIVE="true" ;; | |||
*) | |||
if [ "$UID" -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then | |||
# Mask current process as a daemon | |||
umask 002 | |||
else | |||
# Mask current process as an initscript | |||
umask 022 | |||
fi | |||
return | |||
esac | |||
# Gentoo has '/etc/profile.env' which needs to be read. Here we will | |||
# check if it exists and source it if found. | |||
[ -e /etc/profile.env ] && | |||
. /etc/profile.env | |||
# OpenBSD allows setting a custom URL for pkgsrc. This section confirms | |||
# that 'pkg_add' is an available command | |||
[ -e "$(command -v pkg_add)" ] && | |||
PKG_PATH="https://mirror.leaseweb.com/openbsd" && | |||
PKG_PATH="$PKG_PATH/snapshots/packages/amd64/" && | |||
export PKG_PATH | |||
# Setting PS1 correctly depending on the current shell can be important | |||
# for users of non-standard shells. Here we will attempt to accommodate | |||
# other shells if currently in use, and default to standard shell | |||
# semantics. | |||
if [ -e "$BASH_VERSION" ]; then | |||
PS1="[\u@\h \W]\$ " | |||
elif [ -e "$ZSH_VERSION" ]; then | |||
PS1="[%n@%M %d]$ " | |||
else | |||
PS1="[\u@\h \W]\$ " | |||
fi | |||
# This section defines all PATH and MANPATH locations and is mean to be a | |||
# somewhat exhaustive list for compatibility across various systems. It | |||
# may look quite upsetting but it works for our purposes. | |||
PATH="/usr/local/sbin/:/usr/local/bin:/usr/sbin:/usr/bin:/opt/bin" | |||
PATH="$PATH:/sbin:/bin:$HOME/.local/bin:$HOME/.bin:$HOME/bin" | |||
[ -d /usr/X11R6/bin ] && | |||
PATH="$PATH:/usr/X11R6/bin" | |||
MANPATH="/usr/man:/usr/share/man:/usr/local/man:/usr/local/share/man" | |||
MANPATH="$MANPATH:$HOME/.local/man:$HOME/.local/share/man" | |||
# This section defines our exports, including the PATH, MANPATH and PS1 | |||
# that we defined in previous sections. | |||
export EDITOR="emacs -nw" | |||
export LANG="en_US.UTF-8" | |||
export MANPATH | |||
export PAGER="less" | |||
export PATH | |||
export PROMPT_COMMAND="history -a" | |||
export PS1 | |||
export SSH_KEY_PATH="$HOME/.ssh/rsa_id" | |||
# This section will find and source all files in '/etc/profile.d' that | |||
# end in '.sh'. This is a mechanism to allow the use of multiple files | |||
# that will comprise environment settings or other configurations. | |||
for sh in /etc/profile.d/*.sh; do | |||
[ -r "$sh" ] && | |||
. "$sh" | |||
done | |||
# A $USER may want to maintain local shell configuration files. The | |||
# following section attempts to source '$HOME/.profile' along with all | |||
# files within '$HOME/profile.d' that end in '.sh' similarly to the above | |||
# section. | |||
if [ -d "$HOME"/.profile.d ]; then | |||
for sh in $HOME/.profile.d/*.sh; do | |||
[ -r "$sh" ] && | |||
. "$sh" | |||
done | |||
fi | |||
# Keeping things clean in our shell environment is rather important. Here | |||
# we will unset any variables that are no longer needed. | |||
unset sh |
@@ -0,0 +1,7 @@ | |||
# /etc/profile.d/alias.sh | |||
alias df="df -h" | |||
alias ls="ls -hSF" | |||
alias mkdir="mkdir -p" | |||
alias mv="mv -vi" | |||
alias rm="rm -vi" |
@@ -0,0 +1,13 @@ | |||
# /etc/profile.d/defaults.sh | |||
## User Directories | |||
if [ "$(whoami)" != 'root' ]; then | |||
Folders="Documents Downloads Music Pictures Projects Videos" | |||
for Folder in $Folders; do | |||
[ -d "$HOME"/"$Folder" ] || | |||
mkdir "$HOME"/"$Folder" | |||
done | |||
unset Folders | |||
fi |
@@ -0,0 +1,8 @@ | |||
# /etc/profile.d/golang.sh | |||
GOPATH="$HOME/.go:$HOME/Projects" | |||
GOBIN="$GOPATH/bin" | |||
GODOC="$GOPATH/doc" | |||
export GOPATH GOBIN GODOC | |||
export PATH="$PATH:$GOBIN" |
@@ -0,0 +1,66 @@ | |||
# /etc/profile.d/gein.sh | |||
gpkg() { | |||
if [ $EUID -ne 0 ]; then | |||
if [ -e $(command -v sudo) ]; then | |||
SU="sudo" | |||
else | |||
SU="su -c" | |||
fi | |||
fi | |||
case $1 in | |||
-S|sync) | |||
echo "gpkg: syncing Portage..." | |||
$SU emerge -q --sync && | |||
echo "gpkg: Portage sync completed" | |||
;; | |||
-i|install) | |||
$SU emerge -av --quiet-build ${@:2} | |||
;; | |||
-r|--remove) | |||
$SU emerge -avc --quiet-build ${@:2} | |||
;; | |||
-p|--purge) | |||
$SU gpkg -r $(qlist -CI ${@:2}) | |||
;; | |||
-c|--clean) | |||
$SU emerge -av --depclean --quiet-build | |||
;; | |||
-u|--update) | |||
case $2 in | |||
-w|--world) | |||
$SU emerge -avuDU --keep-going --with-bdeps=y \ | |||
--quiet-build @world | |||
;; | |||
-s|--system) | |||
$SU emerge -avuDN --quiet-build @system | |||
;; | |||
*) | |||
echo "gpkg: update: Available options:" | |||
echo " -w, --world Update world packages" | |||
echo " -s, --system Update system packages" | |||
;; | |||
esac | |||
;; | |||
*) | |||
echo "gpkg: Available options:" | |||
echo " -S, --sync Sync Portage" | |||
echo " -i, --install Install a package" | |||
echo " -r, --remove Safely remove a package" | |||
echo " -p, --purge Purge package and dependencies" | |||
echo " -c, --clean Remove unneeded packages" | |||
echo " -u, --update Update packages" | |||
echo " -w, --world Update world packages" | |||
echo " -s, --system Update system packages" | |||
;; | |||
esac | |||
} |
@@ -0,0 +1,38 @@ | |||
# /etc/profile.d/kbuild.sh | |||
kbuild() { | |||
CWD="$(pwd)" | |||
if [ $EUID -ne 0 ]; then | |||
if [ -e $(command -v sudo) ]; then | |||
SU="sudo" | |||
else | |||
SU="su -c" | |||
fi | |||
fi | |||
KMake="make -s -j$(grep -c ^processor /proc/cpuinfo)" | |||
eselect kernel list | |||
TargetProfile="" | |||
while [ -z "$TargetProfile" ]; do | |||
read -ep "Which profile?: " TargetProfile | |||
done | |||
if [ -n "$TargetProfile" ]; then | |||
$SU eselect kernel set "$TargetProfile" && | |||
cd /usr/src/linux && | |||
$SU make menuconfig && | |||
$SU $KMake && | |||
$SU $KMake modules && | |||
$SU $KMake install && | |||
$SU $KMake modules install && | |||
$SU grub-mkconfig -o /boot/grub/grub.cfg && | |||
$SU emerge -av --quiet-build @module-rebuild | |||
fi | |||
$SU make clean | |||
unset KMake | |||
cd $CWD | |||
} |
@@ -0,0 +1,15 @@ | |||
# /etc/profile.d/racket.sh | |||
RKTPATH="/usr/racket:/usr/local/racket" | |||
RKTPATH="$RKTPATH:$HOME/racket:$HOME/.racket:$HOME/.local/racket" | |||
RKTBIN="/usr/racket/bin:/usr/local/racket/bin" | |||
RKTBIN="$RKTBIN:$HOME/racket/bin:$HOME/.racket/bin:$HOME/.local/racket/bin" | |||
RKTMAN="/usr/racket/man:/usr/local/racket/man" | |||
RKTMAN="$RKTMAN:$HOME/racket/man:$HOME/.racket/man:$HOME/.local/racket/man" | |||
export PATH="$PATH:$RKTBIN" | |||
export MANPATH="$MANPATH:$RKTMAN" | |||
unset RKTPATH RKTBIN RKTMAN |
@@ -0,0 +1,61 @@ | |||
# /etc/tmux.conf | |||
### General ###################################### | |||
## Force reload of config file | |||
unbind r | |||
bind r source-file ~/.tmux.conf | |||
## Terminal | |||
set-option -g xterm-keys on | |||
set -g default-terminal "tmux-256color" | |||
## Keybind preference | |||
setw -g mode-keys vi | |||
set-option -g status-keys vi | |||
set -g mouse on | |||
## Display | |||
set -s escape-time 0 | |||
set-option -g repeat-time 0 | |||
set -g base-index 1 | |||
setw -g pane-base-index 1 | |||
## Activate inner-most session (when nesting tmux) to send commands | |||
bind a send-prefix | |||
## History | |||
set -g history-limit 8192 | |||
### Keybinds ##################################### | |||
## Return to previous window when prefix is pressed twice | |||
bind C-a last-window | |||
bind C-b last-window | |||
## Window cycle/swap | |||
bind e previous-window | |||
bind f next-window | |||
bind E swap-window -t -1 | |||
bind F swap-window -t +1 | |||
bind -n M-[ previous-window | |||
bind -n M-] next-window | |||
## Moving between panes | |||
bind h select-pane -L | |||
bind j select-pane -D | |||
bind k select-pane -U | |||
bind l select-pane -R | |||
bind -n M-h select-pane -L | |||
bind -n M-l select-pane -R | |||
bind -n M-k select-pane -U | |||
bind -n M-j select-pane -D | |||
## Easy split pane commands | |||
unbind '"' | |||
unbind % | |||
bind = split-window -h | |||
bind - split-window -v | |||
bind -n M-= split-window -h | |||
bind -n M-- split-window -v |
@@ -0,0 +1,171 @@ | |||
" /etc/vimrc | |||
""" Vim-Plug ==================================== | |||
if empty(glob('~/.vim/autoload/plug.vim')) | |||
silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs | |||
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim | |||
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC | |||
endif | |||
call plug#begin('~/.vim/plugged') " Minimalist Vim Plugin Manager | |||
""" Settings ==================================== | |||
Plug 'tpope/vim-sensible' " Sensible Defaults | |||
set t_BE= " Disable bracketed paste | |||
set nocompatible " be iMproved, required | |||
set nobackup " | |||
set noswapfile " | |||
set termencoding=utf-8 " UTF8 as default encoding | |||
set encoding=utf-8 " ... | |||
set scrolloff=100 | |||
""" Input ======================================= | |||
set mouse=a " Enable mouse support | |||
set clipboard=unnamedplus " Share X11 clipboard | |||
let mapleader = ',' | |||
" | |||
nnoremap <C-h> <C-w>h | |||
nnoremap <C-j> <C-w>j | |||
nnoremap <C-k> <C-w>k | |||
nnoremap <C-l> <C-w>l | |||
" Fold Mappings | |||
inoremap <leader>z <C-O>za | |||
nnoremap <leader>z za | |||
onoremap <leader>z <C-C>za | |||
vnoremap <leader>z zf | |||
" Use <leader>/ to clear search highlight | |||
nmap <silent> <leader>/ :nohlsearch<CR> | |||
" | |||
set pastetoggle=<F2> | |||
set listchars=tab:\|.,trail:.,extends:#,nbsp:. | |||
" Write target file as sudo using 'tee' buffer | |||
function SudoWrite() | |||
w !sudo tee % | |||
endfunction | |||
""" Display ===================================== | |||
Plug 'vim-airline/vim-airline' | |||
Plug 'vim-airline/vim-airline-themes' | |||
let g:airline#extensions#tabline#enabled = 1 | |||
Plug 'edkolev/tmuxline.vim' | |||
let g:tmuxline_powerline_separators = 0 | |||
if has('gui_running') | |||
colorscheme slate | |||
set guifont=Noto\ Mono\ Regular\ 10 | |||
set background=dark | |||
set guioptions-=m "remove menu bar | |||
set guioptions-=T "remove toolbar | |||
set guioptions-=r "remove right-hand scroll bar | |||
set guioptions-=L "remove left-hand scroll bar | |||
endif | |||
""" Utilities =================================== | |||
Plug 'spolu/dwm.vim' " Tiled Window Management | |||
Plug 'Shougo/vimfiler.vim' " Powerful file explorer | |||
Plug 'tpope/vim-eunuch' " Helpers for UNIX | |||
Plug 'tpope/vim-dispatch' " Async Build/Test | |||
Plug 'benmills/vimux' " tmux Integration | |||
Plug 'mileszs/ack.vim' " Enhanced Grepping within Vim | |||
if executable('ag') | |||
let g:ackprg = 'ag --vimgrep' | |||
endif | |||
Plug 'ctrlpvim/ctrlp.vim' " Fuzzy file/buffer/mru/tag/etc finder | |||
let g:ctrlp_map = '<c-p>' | |||
let g:ctrlp_cmd = 'CtrlP' | |||
let g:ctrlp_custom_ignore = { | |||
\ 'dir': '\v[\/]\.(git|hg|svn)$', | |||
\ 'file': '\v\.(exe|so|dll)$', | |||
\ 'link': 'some_bad_symbolic_links', | |||
\ } | |||
let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files -co --exclude-standard'] | |||
Plug 'universal-ctags/ctags' " ctags implementation | |||
Plug 'majutsushi/tagbar' " Displays tags in a window | |||
nmap <F8> :TagbarToggle<CR> | |||
Plug 'francoiscabrol/ranger.vim' | |||
""" Languages =================================== | |||
Plug 'sheerun/vim-polyglot' " Language Support | |||
Plug 'scrooloose/syntastic' " Syntax checking hacks for vim | |||
nmap <leader>c :SyntasticCheck<CR> | |||
set statusline+=%#warningmsg# | |||
set statusline+=%{SyntasticStatuslineFlag()} | |||
set statusline+=%* | |||
let g:syntastic_always_populate_loc_list = 1 | |||
let g:syntastic_auto_loc_list = 1 | |||
let g:syntastic_check_on_open = 1 | |||
let g:syntastic_check_on_wq = 0 | |||
let g:syntastic_error_symbol="S>" | |||
let g:syntastic_style_error_symbol="E>" | |||
let g:syntastic_warning_symbol="W>" | |||
let g:syntastic_style_warning_symbol="W>" | |||
Plug 'fatih/vim-go' " Go development plugin for Vim | |||
let g:go_auto_type_info = 1 | |||
let g:go_highlight_functions = 1 | |||
let g:go_highlight_methods = 1 | |||
let g:go_highlight_structs = 1 | |||
let g:go_highlight_interfaces = 1 | |||
let g:go_highlight_operators = 1 | |||
let g:go_highlight_build_constraints = 1 | |||
let g:go_highlight_extra_types = 1 | |||
""" Editor ====================================== | |||
set tabstop=4 " Tabs are 4 columns | |||
set shiftwidth=4 " ... | |||
set softtabstop=4 " ... | |||
set expandtab " Change tabs to spaces | |||
set list " Show whitespace | |||
set number " Show line numbers | |||
set wrap linebreak nolist | |||
autocmd BufWritePre * %s/\s\+$//e " Delete trailing whitespace on save | |||
Plug 'tpope/vim-sleuth' " Heuristically set buffer options | |||
Plug 'nathanaelkane/vim-indent-guides' " Visaully display indent level | |||
Plug 'junegunn/vim-easy-align' " Easier text alignment | |||
xmap ga <Plug>(EasyAlign) | |||
nmap ga <Plug>(EasyAlign) | |||
Plug 'ervandew/supertab' " Vim insert mode completions with Tab | |||
Plug 'tpope/vim-surround' " Quoting/Parenthesizing made simple | |||
Plug 'junegunn/limelight.vim' " Hyperfocus-writing in Vim | |||
""" Version Control System ====================== | |||
Plug 'airblade/vim-gitgutter' " Show git diff in the gutter | |||
nmap <Leader>ha <Plug>GitGutterStageHunk | |||
nmap <Leader>hr <Plug>GitGutterUndoHunk | |||
Plug 'tpope/vim-fugitive' " Git wrapper | |||
Plug 'tpope/vim-git' " Git integration | |||
Plug 'mattn/gist-vim' " Gist upload (GitHub) | |||
call plug#end() |
@@ -0,0 +1,3 @@ | |||
# /etc/xinitrc | |||
exec i3 |
@@ -25,23 +25,80 @@ | |||
# The 'VideoCards' variable *MUST* be set to proceed with the | |||
# installation. Several examples have been provided based on brand or | |||
# target, though if you have any specific needs then set this variable | |||
# accordingly. | |||
# accordingly. If you don't need any video support, then set | |||
# 'VideoCards' to false like the last example. | |||
#VideoCards="i915 i965 intel" | |||
#VideoCards="amdgpu radeonsi" | |||
#VideoCards="nouveau nvidia" | |||
#VideoCards="virtualbox vmware" | |||
#VideoCards="false" | |||
## Configuration | |||
# | |||
# This script relies on downloading configuration files from the main | |||
# repository. Here we will create the 'Source' variable which points to | |||
# the main repository, and a 'Config' variable which is where all | |||
# custom configuration lives. | |||
# the main repository, and 'Config' is the list of all configuration | |||
# files that will be installed. | |||
Source="https://raw.githubusercontent.com/jcmdln/gein/master" | |||
Config="https://raw.githubusercontent.com/jcmdln/cfg/master" | |||
CONFIG() { | |||
# This is a list of all config files that need to be downloaded and | |||
# moved into place. | |||
Configs=" | |||
/etc/portage/make.conf | |||
/etc/portage/package.accept_keywords | |||
/etc/portage/package.env | |||
/etc/portage/package.license | |||
/etc/portage/package.use/defaults | |||
/etc/portage/package.use/multilib | |||
/etc/portage/package.use/packages | |||
/etc/portage/sets/gein-base | |||
/etc/portage/sets/gein-i3wm | |||
/etc/portage/sets/gein-laptop | |||
/etc/portage/sets/gein-lxqt | |||
/etc/portage/sets/gein-steam | |||
/etc/profile | |||
/etc/profile.d/alias.sh | |||
/etc/profile.d/defaults.sh | |||
/etc/profile.d/golang.sh | |||
/etc/profile.d/gpkg.sh | |||
/etc/profile.d/racket.sh | |||
/etc/emacs/default.el | |||
/etc/i3/config | |||
/etc/Xresources | |||
/etc/i3status.conf | |||
/etc/tmux.conf | |||
/etc/vimrc | |||
/etc/xinitrc | |||
" | |||
# Files/Folders that need to be removed and re-created. Sometimes | |||
# 'package.use' is a file, sometimes it's a folder. We need it to | |||
# be a folder so we'll remove it outright and create what we need. | |||
# Sure, this is wasting a little time, I know. | |||
ConfigFolders=" | |||
/etc/portage/package.use | |||
/etc/portage/sets | |||
/etc/profile.d | |||
/etc/emacs | |||
/etc/i3 | |||
" | |||
for Folder in $ConfigFolders; do | |||
rm -rf $Folder | |||
mkdir -p $Folder | |||
done | |||
for File in $Configs; do | |||
wget -q "$Source/$File" -O "$File" | |||
done | |||
} | |||
## System | |||
@@ -211,10 +268,6 @@ BOOTSTRAP() { | |||
# desired profile, compile the kernel, and install some basic packages. | |||
MINIMAL() { | |||
echo "gein: getting configuration files from 'cfg'..." && | |||
$Wget $Config/cfg.sh && | |||
source ./cfg.sh -g | |||
echo "gein: Setting CPU cores and GPU type..." && | |||
sed -i "s/Video_Cards/$VideoCards/g; s/Make_Opts/-j$CPUCores/g" \ | |||
/etc/portage/make.conf | |||
@@ -349,23 +402,30 @@ case $1 in | |||
;; | |||
-m|minimal) | |||
MINIMAL && POSTINSTALL | |||
CONFIG | |||
MINIMAL | |||
POSTINSTALL | |||
;; | |||
-d|desktop) | |||
case $2 in | |||
i3wm) | |||
DesktopChoice="@gein-i3wm" | |||
sed -i '2,$s/^# //g' /etc/portage/package.use/defaults | |||
DesktopChoice="@gein-i3wm" | |||
MINIMAL && DESKTOP && POSTINSTALL | |||
CONFIG | |||
MINIMAL | |||
DESKTOP | |||
POSTINSTALL | |||
;; | |||
lxqt) | |||
DesktopChoice="@gein-lxqt" | |||
sed -i '2,$s/^# //g' /etc/portage/package.use/defaults | |||
DesktopChoice="@gein-lxqt" | |||
MINIMAL && DESKTOP | |||
CONFIG | |||
MINIMAL | |||
DESKTOP | |||
echo "azryn: Set SDDM as the display manager" && | |||
sed -i 's/DISPLAYMANAGER="xdm"/DISPLAYMANAGER="sddm"/g' \ |