Add DWM config

This commit is contained in:
Smirnov Olexandr 2021-01-06 17:54:15 +02:00
parent 13c6216796
commit f7c0cef79f
13 changed files with 407 additions and 131 deletions

13
config/dwm/README.md Normal file
View file

@ -0,0 +1,13 @@
# DWM
![Screenhot](screen.png)
------------------------
### Install
~~~bash
git clone https://git.suckless.org/dwm ~/.config/dwm
sudo cp ~/.config/dwm/dwm.desktop /usr/share/xsessions
cd ~/.config/dwm
sudo make clean install
~~~~

6
config/dwm/autostart.sh Executable file
View file

@ -0,0 +1,6 @@
#!/bin/sh
xautolock -time 5 -locker "betterlockscreen --off 300 -t \"Computer is lockerd\" -l" &
setxkbmap "us,ua" ",winkeys" "grp:alt_shift_toggle" -option "ctrl:nocaps" &
nitrogen --restore &
lxsession &
picom -b &

122
config/dwm/config.def.h Normal file
View file

@ -0,0 +1,122 @@
static const unsigned int borderpx = 1; // border pixel of windows
static const unsigned int snap = 32; // snap pixel
static const int showbar = 1; // 0 means no bar
static const int topbar = 1; // 0 means bottom bar
static const char *fonts[] = { "monospace:size=10" };
static const char col_gray1[] = "#262A2B";
static const char col_gray2[] = "#262A2B";
static const char col_gray3[] = "#CED4DA";
static const char col_gray4[] = "#FFFFFF";
static const char col_cyan[] = "#008DCD";
static const char *colors[][3] = {
/* fg bg border */
[SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
[SchemeSel] = { col_gray4, col_cyan, col_cyan },
};
// Workspaces names
static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
// Rules
static const Rule rules[] = {
/* class instance title tags mask isfloating monitor */
{ "trayer", NULL, NULL, ~0, True, -1 },
{ "Gimp", NULL, NULL, 0, 1, -1 },
{ "Firefox", NULL, NULL, 1 << 8, 0, -1 },
};
// Autostart
static const char *const autostart[] = {
"./.config/dwm/autostart.sh", NULL,
"./.script/dwmbar.sh", NULL,
NULL
};
// Layout
static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */
static const int nmaster = 1; /* number of clients in master area */
static const int resizehints = 1; /* 1 means respect size hints in tiled resizals */
static const Layout layouts[] = {
{ "[]=", tile },
{ "><>", NULL },
{ "[M]", monocle },
};
// Key definitions
#define MODKEY Mod4Mask
#define TAGKEYS(KEY,TAG) \
{ MODKEY, KEY, view, {.ui = 1 << TAG} }, \
{ MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
{ MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
{ MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} },
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
// Commands
static char dmenumon[2] = "0";
static const char *dmenucmd[] = { "dmenu_run", NULL };
static const char *launchercmd[] = { "rofi", "-location", "2", "-show", "drun", NULL };
static const char *passmenucmd[] = { "passmenu", "-h", "24", "-p", "Passwords", NULL };
static const char *termcmd[] = { "alacritty", NULL };
// Keyboards binds
static Key keys[] = {
/* modifier key function argument */
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = launchercmd } }, // Program menu
{ MODKEY, XK_Return, spawn, {.v = termcmd } }, // Terminal
{ MODKEY, XK_q, killclient, {0} }, // Kill window
{ MODKEY, XK_b, togglebar, {0} }, // Toggle status bar
{ MODKEY, XK_j, focusstack, {.i = +1 } },
{ MODKEY, XK_k, focusstack, {.i = -1 } },
{ MODKEY, XK_i, incnmaster, {.i = +1 } },
{ MODKEY, XK_d, incnmaster, {.i = -1 } },
{ MODKEY, XK_h, setmfact, {.f = -0.05} },
{ MODKEY, XK_l, setmfact, {.f = +0.05} },
{ MODKEY, XK_Return, zoom, {0} },
// { MODKEY, XK_Tab, view, {0} },
{ MODKEY, XK_Tab, setlayout, {0} },
{ MODKEY|ShiftMask, XK_Tab, togglefloating, {0} },
{ MODKEY, XK_comma, focusmon, {.i = -1 } },
{ MODKEY, XK_period, focusmon, {.i = +1 } },
{ MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } },
{ MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } },
// Menus
{ MODKEY|ControlMask, XK_i, spawn, {.v = passmenucmd} },
{ MODKEY|ControlMask, XK_u, spawn, SHCMD("~/.script/dmenu/dmenu-config-edit.sh") },
{ MODKEY, XK_Escape, spawn, SHCMD("~/.script/dmenu/dmenu-power.sh") },
// Volume
{ MODKEY, XK_minus, spawn, SHCMD("amixer sset 'Master' 2%-") },
{ MODKEY, XK_equal, spawn, SHCMD("amixer sset 'Master' 2%+") },
{ MODKEY|ShiftMask, XK_minus, spawn, SHCMD("amixer sset 'Master' toggle") },
// Workspaces
TAGKEYS( XK_1, 0)
TAGKEYS( XK_2, 1)
TAGKEYS( XK_3, 2)
TAGKEYS( XK_4, 3)
TAGKEYS( XK_5, 4)
TAGKEYS( XK_6, 5)
TAGKEYS( XK_7, 6)
TAGKEYS( XK_8, 7)
TAGKEYS( XK_9, 8)
{ MODKEY, XK_0, view, {.ui = ~0 } },
{ MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } },
};
// Mouse binds
static Button buttons[] = {
// click event mask button function argument
{ ClkLtSymbol, 0, Button1, setlayout, {0} },
{ ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} },
{ ClkWinTitle, 0, Button2, zoom, {0} },
{ ClkStatusText, 0, Button2, spawn, {.v = termcmd } },
{ ClkClientWin, MODKEY, Button1, movemouse, {0} },
{ ClkClientWin, MODKEY, Button2, togglefloating, {0} },
{ ClkClientWin, MODKEY, Button3, resizemouse, {0} },
{ ClkTagBar, 0, Button1, view, {0} },
{ ClkTagBar, 0, Button3, toggleview, {0} },
{ ClkTagBar, MODKEY, Button1, tag, {0} },
{ ClkTagBar, MODKEY, Button3, toggletag, {0} },
};

View file

@ -0,0 +1,116 @@
diff --git a/config.def.h b/config.def.h
index 1c0b587..ed056a4 100644
--- a/config.def.h
+++ b/config.def.h
@@ -18,6 +18,11 @@ static const char *colors[][3] = {
[SchemeSel] = { col_gray4, col_cyan, col_cyan },
};
+static const char *const autostart[] = {
+ "st", NULL,
+ NULL /* terminate */
+};
+
/* tagging */
static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
diff --git a/dwm.c b/dwm.c
index 9fd0286..1facd56 100644
--- a/dwm.c
+++ b/dwm.c
@@ -234,6 +234,7 @@ static int xerror(Display *dpy, XErrorEvent *ee);
static int xerrordummy(Display *dpy, XErrorEvent *ee);
static int xerrorstart(Display *dpy, XErrorEvent *ee);
static void zoom(const Arg *arg);
+static void autostart_exec(void);
/* variables */
static const char broken[] = "broken";
@@ -275,6 +276,34 @@ static Window root, wmcheckwin;
/* compile-time check if all tags fit into an unsigned int bit array. */
struct NumTags { char limitexceeded[LENGTH(tags) > 31 ? -1 : 1]; };
+/* dwm will keep pid's of processes from autostart array and kill them at quit */
+static pid_t *autostart_pids;
+static size_t autostart_len;
+
+/* execute command from autostart array */
+static void
+autostart_exec() {
+ const char *const *p;
+ size_t i = 0;
+
+ /* count entries */
+ for (p = autostart; *p; autostart_len++, p++)
+ while (*++p);
+
+ autostart_pids = malloc(autostart_len * sizeof(pid_t));
+ for (p = autostart; *p; i++, p++) {
+ if ((autostart_pids[i] = fork()) == 0) {
+ setsid();
+ execvp(*p, (char *const *)p);
+ fprintf(stderr, "dwm: execvp %s\n", *p);
+ perror(" failed");
+ _exit(EXIT_FAILURE);
+ }
+ /* skip arguments */
+ while (*++p);
+ }
+}
+
/* function implementations */
void
applyrules(Client *c)
@@ -1249,6 +1278,16 @@ propertynotify(XEvent *e)
void
quit(const Arg *arg)
{
+ size_t i;
+
+ /* kill child processes */
+ for (i = 0; i < autostart_len; i++) {
+ if (0 < autostart_pids[i]) {
+ kill(autostart_pids[i], SIGTERM);
+ waitpid(autostart_pids[i], NULL, 0);
+ }
+ }
+
running = 0;
}
@@ -1632,9 +1671,25 @@ showhide(Client *c)
void
sigchld(int unused)
{
+ pid_t pid;
+
if (signal(SIGCHLD, sigchld) == SIG_ERR)
die("can't install SIGCHLD handler:");
- while (0 < waitpid(-1, NULL, WNOHANG));
+ while (0 < (pid = waitpid(-1, NULL, WNOHANG))) {
+ pid_t *p, *lim;
+
+ if (!(p = autostart_pids))
+ continue;
+ lim = &p[autostart_len];
+
+ for (; p < lim; p++) {
+ if (*p == pid) {
+ *p = -1;
+ break;
+ }
+ }
+
+ }
}
void
@@ -2139,6 +2194,7 @@ main(int argc, char *argv[])
if (!(dpy = XOpenDisplay(NULL)))
die("dwm: cannot open display");
checkotherwm();
+ autostart_exec();
setup();
#ifdef __OpenBSD__
if (pledge("stdio rpath proc exec", NULL) == -1)

7
config/dwm/dwm.desktop Normal file
View file

@ -0,0 +1,7 @@
[Desktop Entry]
Encoding=UTF-8
Name=Dwm
Comment=Dynamic window manager
Exec=dwm
Icon=dwm
Type=XSession

BIN
config/dwm/screen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 KiB

View file

@ -19,6 +19,7 @@ hide_edge_borders smart
set $terminal alacritty
set $browser firefox
set $filemanager thunar
set $guieditor emacs
############ Autostart ############
exec --no-startup-id exec picom --experimental-backends -b
@ -41,14 +42,17 @@ bindsym --release $mod+Shift+q exec xkill
# Restart i3wm
bindsym $mod+Control+r restart
# Reload i3wm
bindsym $mod+Shift+r reload
# Floating layout
bindsym $mod+Tab floating toggle
# Tab layout
bindsym $mod+w layout tabbed
bindsym $mod+Shift+w layout tabbed
# Split layout
bindsym $mod+e layout toggle split
bindsym $mod+Shift+e layout toggle split
# Splits
bindsym $mod+b split h
@ -71,6 +75,7 @@ bindsym $mod+Control+i exec passmenu -b -h 24 -p Passwords
bindsym $mod+Return exec $terminal
bindsym $mod+F2 exec $browser
bindsym $mod+f exec $filemanager
bindsym $mod+d exec $guieditor
# Sceenshot
bindsym --release Print exec "scrot -s /home/${USER}/$(date +%Y-%m-%d-%H-%M-%S).png"

View file

@ -1,55 +1,47 @@
filetype plugin on
call plug#begin('~/.vim/plugged')
Plug 'nathanaelkane/vim-indent-guides' " Displaying indent levels
Plug 'voldikss/vim-floaterm' " Terminal window
Plug 'frazrepo/vim-rainbow' " Rainbow brackets
Plug 'airblade/vim-gitgutter' " Git indicator
Plug 'ap/vim-css-color' " CSS color preview
Plug 'mhinz/vim-startify' " Start page
Plug 'itchyny/lightline.vim' " Status line
Plug 'vimwiki/vimwiki', {'on': 'VimwikiIndex'} " Notes manager in (n)vim
" Color scheme
Plug 'Smirnov-O/nten16.vim'
Plug 'Smirnov-O/nten16.vim' " Color scheme
Plug 'frazrepo/vim-rainbow' " Rainbow brackets
Plug 'mhinz/vim-startify' " Start page
Plug 'ap/vim-css-color' " CSS color preview
Plug 'airblade/vim-gitgutter' " Git indicator
Plug 'preservim/nerdcommenter' " Code commenter
" Project/file navigation
Plug 'scrooloose/nerdtree', {'on': 'NERDTreeToggle'}
Plug 'ryanoasis/vim-devicons', {'on': 'NERDTreeToggle'}
Plug 'preservim/tagbar', {'on': 'TagbarToggle'}
Plug 'kien/ctrlp.vim', {'on': 'CtrlP'}
Plug 'easymotion/vim-easymotion'
" Completion
" Completion & snippets
Plug 'ycm-core/YouCompleteMe'
Plug 'jiangmiao/auto-pairs'
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'SirVer/ultisnips'
" Language support
Plug 'iamcco/markdown-preview.nvim', {'for': 'markdown'}
Plug 'dhruvasagar/vim-table-mode', {'for': 'markdown'}
" Language syntax
Plug 'plasticboy/vim-markdown', {'for': 'markdown'}
Plug 'dhruvasagar/vim-table-mode', {'for': 'markdown'}
Plug 'xinhangliu/ficus.vim', {'for': 'markdown'}
Plug 'vim-python/python-syntax', {'for': 'python'}
Plug 'kovetskiy/sxhkd-vim', {'for': 'sxhkd'}
Plug 'mattn/emmet-vim', {'on': 'Emmet'}
Plug 'cakebaker/scss-syntax.vim', {'for': 'scss'}
Plug 'PotatoesMaster/i3-vim-syntax', {'for': 'i3'}
Plug 'alaviss/nim.nvim', {'for': 'nim'}
Plug 'fatih/vim-go', {'for': 'go'}
"Plug 'nsf/gocode', {'for': 'go'}
Plug 'PotatoesMaster/i3-vim-syntax', {'for': 'i3'}
Plug 'kovetskiy/sxhkd-vim', {'for': 'sxhkd'}
call plug#end()
" Colors
" Theme
set termguicolors
set background=dark
colo nten16
colorscheme nten16
set t_Co=256
" Syntax & line numbers
" Syntax & number line
syntax on
set number
set relativenumber
set nu rnu
" Vim status line
" Status line
set noshowmode
set ruler
set showmode
set showcmd
" Mouse
@ -57,20 +49,20 @@ set mouse=a
set mousehide
set cursorline
" File encoding
" Encoding
set encoding=utf-8
set fileencodings=utf8
set fileencodings=utf-8
" Line wrap
set nowrap
set nolinebreak
" Backup files & history
" Backup file & history
set nobackup
set noswapfile
set history=100
" Auto reload file
" Reload file
set autoread
" Tabs
@ -85,7 +77,7 @@ set incsearch
set ignorecase
set smartcase
" Buffer
" Buffer(s)
set hidden
set smartindent
@ -96,9 +88,7 @@ set spelllang=en_us
" Disable sound
set visualbell t_vb=
" == Plugins configure
" Lightline
" == Plugins configuration
let g:lightline = {
\ 'colorscheme': 'nten16',
\ 'active': {
@ -106,51 +96,52 @@ let g:lightline = {
\ [ 'readonly', 'modified' ] ],
\ 'right': [ [ 'lineinfo' ],
\ [ 'percent' ],
\ [ 'filename', 'fileencoding', 'filetype' ] ]
\ [ 'filename', 'filetype' ] ]
\ }, }
" Markdown
let g:vim_markdown_folding_disabled = 1
let g:markdown_fenced_languages = ['go', 'python', 'bash', 'sh=bash']
let g:ficus_dir = "~/Documents/Notes"
" Rainbow
let g:rainbow_active = 1
" Python
let g:python_higlight_all = 1
" YouCompleteMe
let g:ycm_key_list_previous_completion=['<Up>']
" UltiSnipts
let g:UltiSnipsExpandTrigger="<c-tab>"
let g:UltiSnipsListSnippets="<c-s-tab>"
"let g:UltiSnipsJumpForwardTrigger="<c-j>"
"let g:UltiSnipsJumpBackwardTrigger="<c-k>"
" Go
let g:go_template_autocreate = 0
let g:go_highlight_structs = 1
let g:go_highlight_methods = 1
let g:go_highlight_functions = 1
let g:go_highlight_operators = 1
let g:go_highlight_build_constraints = 1
let g:go_snippet_engine = ""
" TagBar
let g:tagbar_autoclose = 1
let g:tagbar_width = 18
let g:tagbar_left = 1
" Nerdtree
let NERDTreeIgnore = ['__pycache__', '.DS_Store', '.git']
let g:NERDTreeWinPos = "right"
let g:NERDTreeWinSize = 28
let NERDTreeMinimalUI = 1
let NERDTreeShowLineNumbers = 1
let NERDTreeShowHidden = 0
map <C-b> :NERDTreeToggle<CR>
" VimWiki
let g:vimwiki_markdown_link_ext = 0
let g:vimwiki_list = [{
\ 'path': '~/Documents/Notes',
\ 'syntax': 'markdown',
\ 'ext': '.md',
\ }]
" Coc
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
" Markdown
let g:vim_markdown_folding_disabled = 1
" Easymotion
let g:EasyMotion_do_mapping = 0
let g:EasyMotion_smartcase = 1
nmap f <Plug>(easymotion-s)
nmap FF <Plug>(easymotion-overwin-line)
nmap FD <Plug>(easymotion-overwin-f2)
nmap FS <Plug>(easymotion-bd-w)
" CtrlP
let g:ctrlp_custom_ignore = '\v[\/]\.git$'
imap <C-p> :CtrlP<CR>
nmap <C-p> :CtrlP<CR>
" Indent guides
let g:indent_guides_enable_on_vim_startup = 1
" Python
let g:python_highlight_all = 1
let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$'
" Startify
let g:startify_custom_header = [
@ -164,47 +155,21 @@ let g:startify_lists = [
\ { 'type': 'files', 'header': ["  Files"] },
\ ]
" Rainbow
let g:rainbow_active = 1
" TagBar
imap <F9> :TagbarToggle<CR>
nmap <F9> :TagbarToggle<CR>
let g:tagbar_autoclose = 1
let g:tagbar_width = 18
let g:tagbar_left = 1
" Floaterm
let g:floaterm_title = "VimTermianl"
let g:floaterm_wintype = "floating"
let g:floaterm_position = "center"
let g:floaterm_height = 0.7
let g:floaterm_width = 0.6
let g:floaterm_autoclose = 2
nmap <A-t> :FloatermNew<CR>
" Go
let g:go_template_autocreate = 0
" == Maping
" == Mapping
let mapleader=","
" Window(s)
" window(s)
nmap <C-h> :wincmd h<CR>
nmap <C-j> :wincmd j<CR>
nmap <C-k> :wincmd k<CR>
nmap <C-l> :wincmd l<CR>
nmap <A-q> :wincmd q<CR>
nmap <A-c> :wincmd n<CR>
nmap <A-z> :wincmd K<CR>
nmap <A-x> :wincmd L<CR>
nmap <A-h> :wincmd <<CR>
nmap <A-l> :wincmd ><CR>
nmap <A-c> :wincmd n<CR>
" Tab(s)
noremap <C-Tab> :tabnext<CR>
noremap <C-S-Tab> :tabprev<CR>
noremap <C-n> :tabnew<CR>
noremap <C-t> :tabnew<CR>
noremap <C-w> :tabclose<CR>
noremap <A-1> :tabn 1<CR>
@ -220,3 +185,7 @@ noremap <A-9> :tabn 9<CR>
" Buffer(s)
noremap <leader>p :bnext<CR>
noremap <leader>o :bprev<CR>
" Plugins
map <F9> :TagbarToggle<CR>
map <C-b> :NERDTreeToggle<CR>

View file

@ -22,7 +22,7 @@ font-0 = Iosevka Nerd Font:style=Medium:size=8;3
font-1 = FontAwesome5Free:style=Solid:size=7.5;2.5
font-2 = Weather Icons:size=7;2
modules-left = i3 menu pacman-up window-name
modules-right = keyboard pulseaudio backlight wifi-signal time date
modules-right = pulseaudio backlight wifi-signal keyboard time date
tray-position = right
[module/i3]
@ -103,7 +103,7 @@ interval = 60
[module/pacman-up]
type = custom/script
exec = ~/.config/polybar/scripts/updates-pacman-aur.sh
interval = 60
interval = 15
[module/window-name]
type = internal/xwindow

View file

@ -1,12 +1,23 @@
(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.
'(package-selected-packages '(markdown-mode zoutline)))
(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.
)
'(package-selected-packages '(racket-mode markdown-mode zoutline)))
(custom-set-faces)
(use-package markdown-mode
:commands (markdown-mode gfm-mode)
:mode
("README.*\\.md\\'" . gfm-mode)
("\\.md\\'" . markdown-mode)
("\\.markdown\\'" . markdown-mode)
:hook
(markdown-mode . variable-pitch-mode)
(markdown-mode . yas-minor-mode)
(markdown-mode . smartparens-mode)
:custom
(markdown-command "pandoc")
(markdown-header-scaling t)
:config
(unbind-key "DEL" gfm-mode-map))

View file

@ -3,3 +3,4 @@
(package! go-autocomplete)
(package! markdown-mode)
(package! hy-mode)
(package! nim-mode)

25
script/dwmbar.sh Executable file
View file

@ -0,0 +1,25 @@
#!/bin/sh
getDate() {
local date="$(date +%d.%m.%Y)"
echo "${date}"
}
getTime() {
local time="$(date +%H:%M)"
echo "${time}"
}
getVolume() {
local volume="$(amixer get Master | tail -n1 | sed -r 's/.*\[(.*)%\].*/\1/')"
echo "${volume}"
}
getKeyLayout() {
case "$(xkblayout)" in
"Eng") echo " us" ;;
"Rus") echo " ru" ;;
"Ukr") echo " ua" ;;
esac
}
while true; do
xsetroot -name " $(getVolume) | $(getKeyLayout) | $(getTime) | $(getDate)"
sleep 0
done

7
zshrc
View file

@ -9,9 +9,9 @@ ZSH_THEME="cyan-simple" # Set theme
#HYPHEN_INSENSITIVE="true" # Case-sensitive completion must be off.
#DISABLE_AUTO_UPDATE="true" # Disable bi-weekly auto-update checks.
#DISABLE_UPDATE_PROMPT="true" # Automatically update without prompting.
#DISABLE_MAGIC_FUNCTIONS="true" # If pasting URLs and other text is messed up.
#DISABLE_MAGIC_FUNCTIONS="true" # If pasting URL and other text is messed up.
#DISABLE_LS_COLORS="true" # Disable colors in ls.
#DISABLE_AUTO_TITLE="true" # Disable auto-setting terminal title.
DISABLE_AUTO_TITLE="true" # Disable auto-setting terminal title.
#ENABLE_CORRECTION="true" # Enable command auto-correction.
#COMPLETION_WAITING_DOTS="true" # Display red dots whilst waiting for completion.
export UPDATE_ZSH_DAYS=7 # Change how often to auto-update.
@ -49,6 +49,8 @@ alias vim="nvim"
alias tmux="tmux -2"
alias ipython="ipython --no-banner"
alias icat="kitty +kitten icat"
alias ccat="sh -c cat"
alias cat="bat"
eval $(thefuck --alias)
# Exit
@ -71,4 +73,3 @@ alias doomupgrade="$HOME/.emacs.d/bin/doom upgrade"
alias doomdoctor="$HOME/.emacs.d/bin/doom doctor"
alias doom="$HOME/.emacs.d/bin/doom"
eval $(thefuck --alias)