diff --git a/devilspie2/config.lua b/devilspie2/config.lua new file mode 100644 index 0000000..4e320a0 --- /dev/null +++ b/devilspie2/config.lua @@ -0,0 +1,26 @@ +if (get_window_type()=="WINDOW_TYPE_NORMAL") then + debug_print(get_application_name()) + if (get_class_instance_name()=="math term") then + set_window_workspace(2) + xsize, ysize = get_screen_geometry() + set_window_size (xsize/2, ysize) + maximize_vertically() + set_window_position(0,0,0) + undecorate_window() + set_on_top() + change_workspace(2) + end + if (get_application_name()=="math zathura") then + set_window_workspace(2) + xsize, ysize = get_screen_geometry() + set_window_size (xsize/2, ysize) + maximize_vertically() + set_window_position(xsize/2,0,0) + undecorate_window() + set_on_top() + end + if (get_class_instance_name()=="kitty") then + xsize, ysize = get_screen_geometry() + set_window_size (xsize, ysize) + end +end diff --git a/kitty/kitty.conf b/kitty/kitty.conf new file mode 100644 index 0000000..046e864 --- /dev/null +++ b/kitty/kitty.conf @@ -0,0 +1,183 @@ +# vim:fileencoding=utf-8:ft=conf + +# Font family. You can also specify different fonts for the +# bold/italic/bold-italic variants. By default they are derived automatically, +# by the OSes font system. Setting them manually is useful for font families +# that have many weight variants like Book, Medium, Thick, etc. For example: +# font_family Operator Mono Book +# bold_font Operator Mono Thick +# bold_italic_font Operator Mono Medium +# font_family Input Mono +font_family Fantasque Sans Mono +italic_font auto +bold_font auto +bold_italic_font auto + +# Font size (in pts) +font_size 11.0 + +# The foreground color +foreground #c0b18b +#foreground #c0b18b + +# The background color +background #262626 + +# The foreground for selections +selection_foreground #2f2f2f + +# The background for selections +selection_background #d75f5f + +# The cursor color +cursor #8fee96 + +# The cursor shape can be one of (block, beam, underline) +shell_integration no-cursor +cursor_shape block + +# The interval (in seconds) at which to blink the cursor. Set to zero to +# disable blinking. +cursor_blink_interval 0.5 + +# Stop blinking cursor after the specified number of seconds of keyboard inactivity. Set to +# zero or a negative number to never stop blinking. +cursor_stop_blinking_after 15.0 + +# Number of lines of history to keep in memory for scrolling back +scrollback_lines 2000 + +# Program with which to view scrollback in a new window. The scrollback buffer is passed as +# STDIN to this program. If you change it, make sure the program you use can +# handle ANSI escape sequences for colors and text formatting. +scrollback_pager less +G -R + +# Wheel scroll multiplier (modify the amount scrolled by the mouse wheel) +wheel_scroll_multiplier 5.0 + +# The interval between successive clicks to detect double/triple clicks (in seconds) +click_interval 0.5 + +# Characters considered part of a word when double clicking. In addition to these characters +# any character that is marked as an alpha-numeric character in the unicode +# database will be matched. +select_by_word_characters :@-./_~?&=%+# + +# Hide mouse cursor after the specified number of seconds of the mouse not being used. Set to +# zero or a negative number to disable mouse cursor hiding. +mouse_hide_wait 1.0 + +# The enabled window layouts. A comma separated list of layout names. The special value * means +# all layouts. The first listed layout will be used as the startup layout. +# For a list of available layouts, see the file layouts.py +enabled_layouts * + +# If enabled, the window size will be remembered so that new instances of kitty will have the same +# size as the previous instance. If disabled, the window will initially have size configured +# by initial_window_width/height, in pixels. +remember_window_size no +window_margin_width 0 +window_padding_width 0 +window_border_width 0 +#initial_window_width 640 +#initial_window_height 400 + +# Delay (in milliseconds) between screen updates. Decreasing it, increases fps +# at the cost of more CPU usage. The default value yields ~100fps which is more +# that sufficient for most uses. +# repaint_delay 10 +repaint_delay 10 + +# Delay (in milliseconds) before input from the program running in the terminal +# is processed. Note that decreasing it will increase responsiveness, but also +# increase CPU usage and might cause flicker in full screen programs that +# redraw the entire screen on each loop, because kitty is so fast that partial +# screen updates will be drawn. +input_delay 3 + +# Visual bell duration. Flash the screen when a bell occurs for the specified number of +# seconds. Set to zero to disable. +visual_bell_duration 0.0 + +# Enable/disable the audio bell. Useful in environments that require silence. +enable_audio_bell yes + +# The program with which to open URLs that are clicked on. The special value "default" means to +# use the operating system's default URL handler. +open_url_with default + +# The value of the TERM environment variable to set +term xterm-kitty + +# The color for the border of the active window +active_border_color #ffffff + +# The color for the border of inactive windows +inactive_border_color #cccccc + +# Tab-bar colors +active_tab_foreground #000 +active_tab_background #eee +inactive_tab_foreground #444 +inactive_tab_background #999 + + +# The 16 terminal colors. There are 8 basic colors, each color has a dull and +# bright version. + +# black +color0 #2f2f2f +color8 #656565 + +# red +color1 #d75f5f +color9 #d75f5f + +# green +color2 #d4d232 +color10 #8fee96 + +# yellow +color3 #af865a +color11 #cd950c + +# blue +color4 #22c3a1 +color12 #22c3a1 + +# magenta +color5 #775759 +color13 #775759 + +# cyan +color6 #84edb9 +color14 #84edb9 + +# white +color7 #c0b18b +color15 #d8d8d8 + +# Key mapping +# For a list of key names, see: http://www.glfw.org/docs/latest/group__keys.html +# For a list of modifier names, see: http://www.glfw.org/docs/latest/group__mods.html +# You can use the special action no_op to unmap a keyboard shortcut that is +# assigned in the default configuration. + +# Clipboard +map super+v paste_from_clipboard +map ctrl+shift+s paste_from_selection +map super+c copy_to_clipboard +map shift+insert paste_from_selection + +# Scrolling +map ctrl+shift+up scroll_line_up +map ctrl+shift+down scroll_line_down +map ctrl+shift+k scroll_line_up +map ctrl+shift+j scroll_line_down +map ctrl+shift+page_up scroll_page_up +map ctrl+shift+page_down scroll_page_down +map ctrl+shift+home scroll_home +map ctrl+shift+end scroll_end +map ctrl+shift+h show_scrollback + +hide_window_decorations titlebar-only diff --git a/nvim/config.lua b/nvim/config.lua new file mode 100644 index 0000000..b46c00c --- /dev/null +++ b/nvim/config.lua @@ -0,0 +1,43 @@ +vim.diagnostic.config({ + virtual_text = false, + signs = true, + underline = true, + update_in_insert = false, +}) + +require'nvim-treesitter.configs'.setup { + ensure_installed = { "c", "lua", "vim", "vimdoc", "query", "markdown", "markdown_inline", "rust" }, + sync_install = false, + auto_install = false, + ignore_install = { "javascript" }, + highlight = { + enable = true, + disable = function(lang, buf) + local max_filesize = 100 * 1024 -- 100 KB + local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf)) + if ok and stats and stats.size > max_filesize then + return true + end + end, + additional_vim_regex_highlighting = false, + }, +} + + +--vim.api.nvim_create_autocmd("BufEnter", { +-- pattern = "*", +-- callback = function() +-- vim.bo.tabstop = 8 +-- vim.bo.shiftwidth = 8 +-- vim.bo.expandtab = false +-- end +--}) + +vim.api.nvim_create_autocmd("FileType", { + pattern = "tex", + callback = function() + vim.bo.tabstop = 4 + vim.bo.shiftwidth = 4 + vim.bo.expandtab = false + end +}) diff --git a/nvim/init.vim b/nvim/init.vim new file mode 100644 index 0000000..cfe7393 --- /dev/null +++ b/nvim/init.vim @@ -0,0 +1,58 @@ +set shiftwidth=8 +set tabstop=8 +"set expandtab=false +set number +set signcolumn=yes:1 +colorscheme slate + +let mapleader = "," +nnoremap n :lua vim.diagnostic.goto_next() +nnoremap p :lua vim.diagnostic.goto_prev() +nnoremap e :lua vim.diagnostic.open_float() + +" vim-plug config + +call plug#begin() +" Plug 'williamboman/mason.nvim' +" Plug 'williamboman/mason-lspconfig.nvim' +Plug 'neovim/nvim-lspconfig' +Plug 'hrsh7th/cmp-nvim-lsp' +Plug 'hrsh7th/cmp-buffer' +Plug 'hrsh7th/cmp-path' +Plug 'hrsh7th/cmp-cmdline' +Plug 'hrsh7th/nvim-cmp' + +Plug 'SirVer/ultisnips' +Plug 'quangnguyen30192/cmp-nvim-ultisnips' + +let g:UltiSnipsExpandTrigger = '' +let g:UltiSnipsJumpForwardTrigger = '' +let g:UltiSnipsJumpBackwardTrigger = '' + +let g:UltiSnipsEditSplit="vertical" +let g:UltiSnipsSnippetDirectories=["/home/furtest/files/scripts/config_files/nvim/ultisnips"] + +Plug 'lervag/vimtex' + +let g:tex_flavor='latex' +let g:vimtex_view_method='zathura' + +let g:vimtex_view_general_options = '-reuse-instance' + +let g:vimtex_quickfix_mode=0 +set conceallevel=1 +let g:tex_conceal='abdmg' + +Plug 'iamcco/markdown-preview.nvim' + +Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} + +" Plug 'voldikss/vim-floaterm' " Floating terminal window (useless) + +call plug#end() + +" Source nvim-cmp config +lua require('nvim-cmp') +" lua require("mason").setup() +" lua require("mason-lspconfig").setup() +lua require('config') diff --git a/nvim/nvim-cmp.lua b/nvim/nvim-cmp.lua new file mode 100644 index 0000000..6c3fd09 --- /dev/null +++ b/nvim/nvim-cmp.lua @@ -0,0 +1,79 @@ + -- Set up nvim-cmp. +local cmp = require'cmp' + +cmp.setup({ + snippet = { + expand = function(args) + vim.fn["UltiSnips#Anon"](args.body) + end, + }, + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping.select_prev_item(), + [''] = cmp.mapping.select_next_item(), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.confirm({ select = true }), + }), + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'ultisnips' }, + }, { + { name = 'buffer' }, + }) + }) + + +-- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). +cmp.setup.cmdline({ '/', '?' }, { + mapping = cmp.mapping.preset.cmdline(), + sources = { + { name = 'buffer' } + } +}) + +-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). +cmp.setup.cmdline(':', { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = 'path' } + }, { + { name = 'cmdline' } + }), + matching = { disallow_symbol_nonprefix_matching = false } +}) + + +-- Set up lspconfig. +local capabilities = require('cmp_nvim_lsp').default_capabilities() +local lsp = require('lspconfig') + +lsp.ccls.setup{ + capabilities = capabilities, + init_options = { + cache = { + directory = vim.fn.expand("~/.cache/ccls") -- Store index globally + }, + compilationDatabaseDirectory = "build", -- Uses 'build/compile_commands.json' if present + highlight = { lsRanges = true }, -- Improves semantic highlighting + index = { + threads = 4, -- Adjust based on your CPU (more threads = faster indexing) + initialBlacklist = { ".*_test.cpp", ".*_unittest.cpp" } -- Avoid indexing test files + }, + completion = { + detailedLabel = true -- Better completion info + }, + diagnostics = { + onChange = 300 -- Delay diagnostics updates for better performance + } + } +} + + +-- clangd and ccls are both C and C++ language servers +-- having them both active at the same time is useless +-- lsp.clangd.setup { +-- capabilities = capabilities, +-- } + diff --git a/nvim/ultisnips/tex/tex.snippets b/nvim/ultisnips/tex/tex.snippets new file mode 100644 index 0000000..4a1aecb --- /dev/null +++ b/nvim/ultisnips/tex/tex.snippets @@ -0,0 +1,127 @@ +global !p +def math(): + return vim.eval('vimtex#syntax#in_mathzone()') == '1' + +def comment(): + return vim.eval('vimtex#syntax#in_comment()') == '1' + +def env(name): + [x,y] = vim.eval("vimtex#env#is_inside('" + name + "')") + return x != '0' and y != '0' + +endglobal + +snippet beg "begin{} / end{}" bA +\\begin{$1} + $0 +\\end{$1} +endsnippet + + +priority 100 +snippet ... "dots" iA +\dots +endsnippet + +snippet km "Math" wA +$${1}$`!p +if t[2] and t[2][0] not in [',', '.', '?', '-', ' ']: + snip.rv = ' ' +else: + snip.rv = '' +`$2 +endsnippet + +snippet dm "Math" wA +\[ +${1:${VISUAL}} +\] $0 +endsnippet + + +context "math()" +snippet '([A-Za-z])(\d)' "auto subscript" wrA +`!p snip.rv = match.group(1)`_`!p snip.rv = match.group(2)` +endsnippet + +#context "math()" +#snippet '([A-Za-z])_(\d\d)' "auto subscript2" wrA +#`!p snip.rv = match.group(1)`_{`!p snip.rv = match.group(2)`} +#endsnippet + +context "math()" +snippet '([A-Za-z])_' "auto subscript2" wrA +`!p snip.rv = match.group(1)`_{$1}$0 +endsnippet + +snippet enum "Enumerate" bA +\begin{enumerate} + \item $0 +\end{enumerate} +endsnippet + +snippet item "Itemize" bA +\begin{itemize} + \item $0 +\end{itemize} +endsnippet + +snippet sum "sum" w +\sum_{n=${1:1}}^{${2:\infty}} ${3:a_n z^n} +endsnippet + +context "math()" +snippet mat "Matrice symbol" A +\mathcal{M}_{${1:n},${2:p}}(${3:\mathbb{R}})$0 +endsnippet + +snippet pmat "pmat" bA +\begin{pmatrix} + $0 +\end{pmatrix} +endsnippet + +snippet // "Fraction" iA +\\frac{$1}{$2}$0 +endsnippet + +context "math()" +snippet '((\d+)|(\d*)(\\)?([A-Za-z]+)((\^|_)(\{\d+\}|\d))*)/' "Fraction" wrA +\\frac{`!p snip.rv = match.group(1)`}{$1}$0 +endsnippet + +context "math()" +priority 1000 +snippet '^.*\)/' "() Fraction" wrA +`!p +stripped = match.string[:-1] +depth = 0 +i = len(stripped) - 1 +while True: + if stripped[i] == ')': depth += 1 + if stripped[i] == '(': depth -= 1 + if depth == 0: break; + i -= 1 +snip.rv = stripped[0:i] + "\\frac{" + stripped[i+1:-1] + "}" +`{$1}$0 +endsnippet + +context "math()" +snippet text "text zone" A +\text{ $1 }$0 +endsnippet + +snippet def "definition" bA +\begin{definition}[$1] + $0 +\end{definition} +endsnippet + +snippet space "space" i +\hspace{3ex} $0 +endsnippet + +context "math()" +snippet bar "overline bar" iA +\overline{$1}$0 +endsnippet diff --git a/tmux.conf b/tmux.conf new file mode 100644 index 0000000..6b83f08 --- /dev/null +++ b/tmux.conf @@ -0,0 +1,52 @@ +unbind C-b +set-option -g prefix C-f +bind r source-file ~/.tmux.conf +bind h select-pane -L +bind l select-pane -R +bind k select-pane -U +bind j select-pane -D +bind g copy-mode + +setw -g mode-keys vi +# don't rename windows automatically +#set-option -g allow-rename off + + +# DESIGN TWEAKS + +# don't do anything when a 'bell' rings +set -g visual-activity off +set -g visual-bell off +set -g visual-silence off +setw -g monitor-activity off +set -g bell-action none + +# clock mode +setw -g clock-mode-colour colour1 + +# copy mode +setw -g mode-style 'fg=colour2 bg=colour18 bold' + +# pane borders +set -g pane-border-style 'fg=colour2' +set -g pane-active-border-style 'fg=colour3' + +# statusbar +set -g status-position bottom +set -g status-justify left +set -g status-style 'fg=colour2' +set -g status-left '' +set -g status-right '%Y-%m-%d %H:%M ' +set -g status-right-length 50 +set -g status-left-length 10 + +setw -g window-status-current-style 'fg=colour0 bg=colour2 bold' +setw -g window-status-current-format ' #I #W #F ' + +setw -g window-status-style 'fg=colour2 dim' +setw -g window-status-format ' #I #[fg=colour7]#W #[fg=colour2]#F ' + +setw -g window-status-bell-style 'fg=colour2 bg=colour1 bold' + +# messages +set -g message-style 'fg=colour2 bg=colour0 bold' diff --git a/zsh_aliases b/zsh_aliases new file mode 100644 index 0000000..649cce8 --- /dev/null +++ b/zsh_aliases @@ -0,0 +1,23 @@ +alias ll='ls -alFh' +alias la='ls -A' +alias l='ls -C' +alias update='/home/furtest/files/scripts/update.sh' +alias stop='/home/furtest/files/scripts/shutdown.sh' +alias co='/home/furtest/files/scripts/cossh.sh' +alias unisync='/home/furtest/files/scripts/file_sync/sync.sh' +alias open='xdg-open $@ > /dev/null 2>&1' +alias cd='z' +alias ghidra='/home/furtest/application/ghidra/ghidraRun' +alias volatility='/home/furtest/application/volatility/volatility' +alias ghidra_auto='python3 /home/furtest/files/scripts/ghidra_auto.py' +alias analyse='/home/furtest/application/ghidra_11.0.3_PUBLIC/support/analyzeHeadless' +alias maths='/home/furtest/files/scripts/maths.sh' +alias szsh='source ~/.zshrc' +alias checksec='/home/furtest/application/checksec/checksec' +alias leave='tmux detach' +alias sudo='sudo -E' +if [ "$(hostnamectl | sed -n 's/Operating System: //p')" = 'Arch Linux' ];then + alias vim='nvim' +else + alias vim='/home/furtest/application/nvim/bin/nvim' +fi diff --git a/zshrc b/zshrc new file mode 100644 index 0000000..9ad4c1b --- /dev/null +++ b/zshrc @@ -0,0 +1,73 @@ +# Path to your oh-my-zsh installation. +export ZSH="$HOME/.oh-my-zsh" + +# Set name of the theme to load --- if set to "random", it will +# load a random theme each time oh-my-zsh is loaded +ZSH_THEME="awesomepanda" + +# Set list of themes to pick from when loading at random +ZSH_THEME_RANDOM_CANDIDATES=( "edvardm" "awesomepanda" ) + +# Uncomment the following line to disable auto-setting terminal title. +DISABLE_AUTO_TITLE="true" + +# Uncomment the following line to display red dots whilst waiting for completion. +# You can also set it to another string to have that shown instead of the default red dots. +# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f" +# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765) +COMPLETION_WAITING_DOTS="true" + +plugins=(git common-aliases zsh-autosuggestions sudo colored-man-pages zoxide tmux safe-paste colorize vi-mode) + +source $ZSH/oh-my-zsh.sh + +# Written by hand : + +if [ -f ~/.zsh_aliases ]; then + source ~/.zsh_aliases +fi + +DEFAULT_USER=furtest +if whence "nvim" &> /dev/null;then + export EDITOR='nvim' +else + export EDITOR='vim' +fi + +export WINEPREFIX=/home/furtest/applications/wine +export WINEARCH=win32 + +setxkbmap -option +setxkbmap -option ctrl:nocaps + +export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) +gpgconf --launch gpg-agent + +# For vim keybindings in terminal +bindkey -v + +#deno and rust to path +export DENO_INSTALL="/home/furtest/.deno" +export PATH="$PATH:$DENO_INSTALL/bin:/home/furtest/.cargo/bin" + + +#if command -v tmux &> /dev/null && [ -n "$PS1" ] && [[ ! "$TERM" =~ screen ]] && [[ ! "$TERM" =~ tmux ]] && [ -z "$TMUX" ]; then +# exec tmux new-session -A -s main +#fi + + +#Installed oh my zsh plugins + link to doc/explanation +# +#zsh-interactive-cd : better completition (https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/zsh-interactive-cd) (use fzf) +#common-aliases : Add a lot of useful aliases (https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/common-aliases) +#zsh-autosuggestions : Suggest from history (https://github.com/zsh-users/zsh-autosuggestions), stored in custom +#sudo : esc + esc add sudo at start of command (https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/sudo) +#colored-man-pages : add colors to the man pages (https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/colored-man-pages) +#zoxide : smarter cd, remembers visited folder to go back faster (https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/zoxide) +#tmux : add aliases for tmux (https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/tmux) +#safe-paste : stop code from being executed when pasted (https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/safe-paste) +#colorize : Syntax highlighted cat (ccat) (https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/colorize) +#vi-mode : Improve terminal vi keybinding (https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/vi-mode) + +# Created by `pipx` on 2024-09-29 10:10:31 +export PATH="$PATH:/home/furtest/.local/bin"