added submodule for nvim

This commit is contained in:
Jeremie Fraeys 2024-08-09 17:06:42 -04:00
parent da772dfb72
commit 9284454815
60 changed files with 559 additions and 2009 deletions

4
.gitignore vendored
View file

@ -5,8 +5,8 @@ tmux/.config/tmux/plugins/*
vim/.vim/plugged/*
vim/.vim/undodir/*
jupyter/.ipython
jupyter/.jupyter
jupyter/.ipython/*
jupyter/.jupyter/*
conda/.conda/*

View file

@ -1,101 +1,60 @@
# Set XDG_CONFIG_HOME if not already set
if [[ -z "$XDG_CONFIG_HOME" ]]; then
export XDG_CONFIG_HOME="$HOME/.config"
# Ensure XDG_CONFIG_HOME is set
: "${XDG_CONFIG_HOME:=$HOME/.config}"
# Set default pager
export PAGER="less -i -N -S -R"
# Ensure PYENV_ROOT is set and its bin directory is in PATH
if [ -n "$PYENV_ROOT" ] && [[ ! "$PATH" =~ (^|:)${PYENV_ROOT}/bin(:|$) ]]; then
export PATH="$PYENV_ROOT/bin:$PATH"
fi
export PAGER="less"
# Set editor based on SSH connection
if [[ -n $SSH_CONNECTION ]]; then
export EDITOR='vim'
else
export EDITOR='nvim'
fi
# Set PYENV_ROOT and add pyenv to PATH
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
# Add ~/.local/bin to PATH if it exists
if [ -d "$HOME/.local/bin" ]; then
PATH="$HOME/.local/bin:$PATH"
if [ -d "$HOME/.local/bin" ] && [[ ! "$PATH" =~ (^|:)${HOME}/.local/bin(:|$) ]]; then
export PATH="$HOME/.local/bin:$PATH"
fi
# Set permissions for ~/.local/bin
chmod -R ug+rwx "$HOME/.local/bin/"
# Source fzf theme if it exists
if [ -f fzf_theme ]; then
source fzf_theme > /dev/null 2>&1
# Read fzf theme options if the file exists
if [ -f "$HOME/.local/bin/scripts/fzf_theme" ]; then
FZF_OPTIONS=$("$HOME/.local/bin/scripts/fzf_theme")
export FZF_DEFAULT_OPTS="$FZF_OPTIONS"
fi
# Source fzf configuration
source <(fzf --bash)
# Add RVM to PATH
export PATH="$PATH:$HOME/.rvm/bin"
# Add Golang to PATH
export GOPATH="$HOME/Documents/projects:$HOME/go"
export PATH="$PATH:$(go env GOPATH)/bin"
# Function to activate Python virtual environment if found
activate_python_env() {
local env_dir
# Use fd (if available) to find activate script
if command -v fd &> /dev/null; then
env_dir=$(fd -H -I -t f -d 3 'activate$' | xargs dirname)
else
# Fallback to find command
env_dir=$(find . -type f -name activate -exec dirname {} \;)
fi
if [ -n "$env_dir" ]; then
source "$env_dir/activate"
else
echo "No Python virtual environment found in the current directory or its subdirectories."
fi
}
alias act='activate_python_env'
# Aliases
alias python="python3"
alias vim="nvim"
alias tn="tmux new -s $(basename "$(pwd)")"
alias cat="bat --paging=never"
alias grep="grep --color=auto"
alias ll="ls -alF"
alias cp='cp -i'
# Basic `ls` replacement with `eza`, grouping directories first
alias ls='eza --group-directories-first --color=auto'
# List all files, including hidden ones, in long format with grouped directories
alias la='eza -la --group-directories-first --color=auto'
# List files in long format with grouped directories
alias ll='eza -l --group-directories-first --color=auto'
# List files sorted by modification time, newest first, in long format with grouped directories
alias lt='eza -lt --sort newest'
# List files sorted by size, largest first, in long format with grouped directories
alias lS='eza -lS --group-directories-first --color=auto'
# Display directory tree with a depth limit of 3 levels
alias tree='eza --tree --level=3'
# Display git status alongside files
alias lg='eza --git'
# Set bat to highlight --help messages
alias bathelp='bat --plain --language=help'
help() {
"$@" --help 2>&1 | bathelp
}
# Overwrite -h and --help with bat highlights
alias -g -- -h='-h 2>&1 | bat --language=help --style=plain'
alias -g -- --help='--help 2>&1 | bat --language=help --style=plain'
# Initialize zoxide
if command -v zoxide &> /dev/null; then
eval "$(zoxide init bash)"
if [[ ! "$PATH" =~ (^|:)${HOME}/.rvm/bin(:|$) ]]; then
export PATH="$PATH:$HOME/.rvm/bin"
fi
# Add Golang to PATH
if [ -n "$(go env GOPATH)" ] && [[ ! "$PATH" =~ (^|:)$(go env GOPATH)/bin(:|$) ]]; then
export GOPATH="$HOME/Documents/projects:$HOME/go"
export PATH="$PATH:$(go env GOPATH)/bin"
fi
# Cargo setup
if [ -d "$HOME/.cargo/bin" ] && [[ ! "$PATH" =~ (^|:)${HOME}/.cargo/bin(:|$) ]]; then
export PATH="$HOME/.cargo/bin:$PATH"
fi
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/usr/local/Caskroom/miniforge/base/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/usr/local/Caskroom/miniforge/base/etc/profile.d/conda.sh" ]; then
. "/usr/local/Caskroom/miniforge/base/etc/profile.d/conda.sh"
else
export PATH="/usr/local/Caskroom/miniforge/base/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<

View file

@ -1,48 +1,105 @@
# Add custom paths to $PATH
export PATH="$HOME/.local/bin:$PATH"
# Function to clean up and normalize paths
path_print_clean() {
local var=${1:-PATH}
local arr
local newarr=()
local path
local p
# Homebrew Configuration
# Add Homebrew's installation directory to the PATH
if [[ -d /opt/homebrew ]]; then
export PATH="/opt/homebrew/bin:/opt/homebrew/sbin:$PATH"
elif [[ -d /usr/local ]]; then
export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
fi
# Read PATH into an array
IFS=: read -r -a arr <<< "${!var}:"
# Source user-specific profile
if [ -f ~/.bash_profile ]; then
. ~/.bash_profile
fi
# Declare an associative array to keep track of seen paths
declare -A seen
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/usr/local/Caskroom/miniforge/base/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/usr/local/Caskroom/miniforge/base/etc/profile.d/conda.sh" ]; then
. "/usr/local/Caskroom/miniforge/base/etc/profile.d/conda.sh"
else
export PATH="/usr/local/Caskroom/miniforge/base/bin:$PATH"
for p in "${arr[@]}"; do
# Empty element is equivalent to CWD (weird, I know), remove it
if [[ -z $p ]]; then
continue
fi
fi
unset __conda_setup
if [ -f "/usr/local/Caskroom/miniforge/base/etc/profile.d/mamba.sh" ]; then
. "/usr/local/Caskroom/miniforge/base/etc/profile.d/mamba.sh"
fi
# <<< conda initialize <<<
# Remove any relative paths
if [[ ${p:0:1} != '/' ]]; then
continue
fi
# Customize prompt (example prompt)
PS1='\u@\h:\w\$ '
# Normalize path and ensure we can access it
path=$(cd "$p" &>/dev/null && pwd)
# Load FZF
if [ -f ~/.fzf.bash ]; then
source ~/.fzf.bash
# Path doesn't exist or we can't access it
if [[ -z $path ]]; then
continue
fi
# Filter out dups while we are here
if [[ -n ${seen[$path]} ]]; then
continue
fi
seen[$path]=true
# Store the new path
newarr+=("$path")
done
local IFS=:
echo "${newarr[*]}"
}
# Function to clean up the PATH variable
path_clean() {
local path
path=$(path_print_clean) || return 1
# Use eval to correctly assign the cleaned path to the PATH variable
export PATH="$path"
}
# Auto-update and other bash settings
DISABLE_UPDATE_PROMPT=true
# Miscellaneous configurations
# Uncomment to use case-sensitive completion
# CASE_SENSITIVE="true"
# Uncomment to use hyphen-insensitive completion
# HYPHEN_INSENSITIVE="true"
# Load bash completion
if [[ -f /etc/bash_completion ]]; then
. /etc/bash_completion
fi
# Additional configuration for visual enhancements (optional)
if command -v starship &> /dev/null; then
eval "$(starship init bash)"
fi
# Custom aliases
alias python="python3"
alias v="nvim"
alias cat="bat --paging=never"
alias grep="grep --color=auto"
alias ls='eza --group-directories-first --color=auto'
alias la='eza -la --group-directories-first --color=auto'
alias ll='eza -l --group-directories-first --color=auto'
alias lt='eza -lt modified --sort newest'
alias lS='eza -lS --group-directories-first --color=auto'
alias tree='eza --tree --level=3'
alias lg='eza --git'
alias bathelp='bat --plain --language=help'
help() {
"$@" --help 2>&1 | bathelp
}
# Custom Apt udpate and upgrade
alias update='sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade'
# Overwriting -h and --help with bat highlights
alias -g :h='-h 2>&1 | bat --language=help --style=plain'
alias -g :help='--help 2>&1 | bat --language=help --style=plain'
# Set the default editor
export EDITOR='nvim'
# Add eza completions to FPATH
[[ ! "$FPATH" =~ (^|:)${HOME}/.local/bin/eza/completions/bash(:|$) ]] && export FPATH="$HOME/.local/bin/eza/completions/bash:$FPATH"
# Initialize zoxide (replace with bash equivalent if necessary)
eval "$(zoxide init bash)"
path_clean

13
bash/.fzf.bash Executable file
View file

@ -0,0 +1,13 @@
# Setup fzf
# ---------
if [[ ! "$PATH" == */usr/local/opt/fzf/bin* ]]; then
PATH="${PATH:+${PATH}:}/usr/local/opt/fzf/bin"
fi
# Auto-completion
# ---------------
source "/usr/local/opt/fzf/shell/completion.bash"
# Key bindings
# ------------
source "/usr/local/opt/fzf/shell/key-bindings.bash"

View file

@ -1,3 +0,0 @@
/Users/jfraeys/.conda
/usr/local/Caskroom/miniforge/base
/usr/local/Caskroom/miniforge/base/envs/soft-skills-env

View file

@ -1,3 +1,5 @@
channels:
- conda-forge
auto_activate_base: false
changeps1: false

View file

@ -1,11 +0,0 @@
This is the IPython startup directory
.py and .ipy files in this directory will be run *prior* to any code or files specified
via the exec_lines or exec_files configurables whenever you load this profile.
Files will be run in lexicographical order, so you can control the execution order of files
with a prefix, e.g.::
00-first.py
50-middle.py
99-last.ipy

View file

@ -1,10 +0,0 @@
/*This file contains any manual css for this page that needs to override the global styles.
This is only required when different pages style the same element differently. This is just
a hack to deal with our current css styles and no new styling should be added in this file.*/
#ipython-main-app {
position: relative;
}
#jupyter-main-app {
position: relative;
}

View file

@ -1,82 +0,0 @@
// leave at least 2 line with only a star on it below, or doc generation fails
/**
*
*
* Placeholder for custom user javascript
* mainly to be overridden in profile/static/custom/custom.js
* This will always be an empty file in IPython
*
* User could add any javascript in the `profile/static/custom/custom.js` file.
* It will be executed by the ipython notebook at load time.
*
* Same thing with `profile/static/custom/custom.css` to inject custom css into the notebook.
*
*
* The object available at load time depend on the version of IPython in use.
* there is no guaranties of API stability.
*
* The example below explain the principle, and might not be valid.
*
* Instances are created after the loading of this file and might need to be accessed using events:
* define([
* 'base/js/namespace',
* 'base/js/events'
* ], function(IPython, events) {
* events.on("app_initialized.NotebookApp", function () {
* IPython.keyboard_manager....
* });
* });
*
* __Example 1:__
*
* Create a custom button in toolbar that execute `%qtconsole` in kernel
* and hence open a qtconsole attached to the same kernel as the current notebook
*
* define([
* 'base/js/namespace',
* 'base/js/events'
* ], function(IPython, events) {
* events.on('app_initialized.NotebookApp', function(){
* IPython.toolbar.add_buttons_group([
* {
* 'label' : 'run qtconsole',
* 'icon' : 'icon-terminal', // select your icon from http://fortawesome.github.io/Font-Awesome/icons
* 'callback': function () {
* IPython.notebook.kernel.execute('%qtconsole')
* }
* }
* // add more button here if needed.
* ]);
* });
* });
*
* __Example 2:__
*
* At the completion of the dashboard loading, load an unofficial javascript extension
* that is installed in profile/static/custom/
*
* define([
* 'base/js/events'
* ], function(events) {
* events.on('app_initialized.DashboardApp', function(){
* require(['custom/unofficial_extension.js'])
* });
* });
*
* __Example 3:__
*
* Use `jQuery.getScript(url [, success(script, textStatus, jqXHR)] );`
* to load custom script into the notebook.
*
* // to load the metadata ui extension example.
* $.getScript('/static/notebook/js/celltoolbarpresets/example.js');
* // or
* // to load the metadata ui extension to control slideshow mode / reveal js for nbconvert
* $.getScript('/static/notebook/js/celltoolbarpresets/slideshow.js');
*
*
* @module IPython
* @namespace IPython
* @class customjs
* @static
*/

View file

@ -1,13 +0,0 @@
{
"version": 1,
"Exporter": {
"extra_template_paths": [
".",
"/usr/local/Caskroom/miniforge/base/envs/ml-nlp-env/lib/python3.11/site-packages/jupyter_contrib_nbextensions/templates"
],
"preprocessors": [
"jupyter_contrib_nbextensions.nbconvert_support.CodeFoldingPreprocessor",
"jupyter_contrib_nbextensions.nbconvert_support.PyMarkdownPreprocessor"
]
}
}

View file

@ -1,7 +0,0 @@
{
"NotebookApp": {
"nbserver_extensions": {
"jupyter_nbextensions_configurator": true
}
}
}

View file

@ -1,10 +0,0 @@
{
// Notebook Vim
// @axlair/jupyterlab_vim:plugin
// Notebook Vim Settings
// *****************************
// Enabled
// Enable/disable vim extension (may require a page refresh)
"enabled": false
}

View file

@ -1,11 +0,0 @@
{
"toolbar": [
{
"name": "spacer",
"command": "",
"disabled": false,
"type": "spacer",
"rank": 50
}
]
}

View file

@ -1,10 +0,0 @@
{
// Notifications
// @jupyterlab/apputils-extension:notification
// Notifications settings.
// *******************************************
// Fetch official Jupyter news
// Whether to fetch news from Jupyter news feed. If `true`, it will make a request to a website.
"fetchNews": "false"
}

View file

@ -1,14 +0,0 @@
{
// Theme
// @jupyterlab/apputils-extension:themes
// Theme manager settings.
// *************************************
// Selected Theme
// Application-level visual styling theme
"theme": "JupyterLab Dark",
// Scrollbar Theming
// Enable/disable styling of the application scrollbars
"theme-scrollbars": true
}

View file

@ -1,41 +0,0 @@
{
"toolbar": [
{
"name": "duplicate-cell",
"command": "notebook:duplicate-below",
"disabled": false,
"rank": 50
},
{
"name": "move-cell-up",
"command": "notebook:move-cell-up",
"disabled": false,
"rank": 50
},
{
"name": "move-cell-down",
"command": "notebook:move-cell-down",
"disabled": false,
"rank": 50
},
{
"name": "insert-cell-above",
"command": "notebook:insert-cell-above",
"disabled": false,
"rank": 50
},
{
"name": "insert-cell-below",
"command": "notebook:insert-cell-below",
"disabled": false,
"rank": 50
},
{
"name": "delete-cell",
"command": "notebook:delete-cell",
"disabled": false,
"icon": "ui-components:delete",
"rank": 50
}
]
}

View file

@ -1,11 +0,0 @@
{
// CodeMirror
// @jupyterlab/codemirror-extension:commands
// Text editor settings for all CodeMirror editors.
// ************************************************
// Theme
// CSS file defining the corresponding
// .cm-s-[name] styles is loaded
"theme": "jupyter"
}

View file

@ -1,9 +0,0 @@
{
"providerTimeout": 1000,
"showDocumentationPanel": false,
"autoCompletion": false,
"availableProviders": {
"CompletionProvider:context": 500,
"CompletionProvider:kernel": 550
}
}

View file

@ -1,14 +0,0 @@
{
// Code Console
// @jupyterlab/console-extension:tracker
// Code Console settings.
// *************************************
// Prompt Cell Configuration
// The configuration for all prompt cells; it will override the CodeMirror default configuration.
"promptCellConfig": {
"codeFolding": false,
"lineNumbers": false,
"autoClosingBrackets": false
}
}

View file

@ -1,10 +0,0 @@
{
"toolbar": [
{
"name": "delimiter",
"command": "",
"disabled": false,
"rank": 10
}
]
}

View file

@ -1,10 +0,0 @@
{
"toolbar": [
{
"name": "delimiter",
"command": "",
"disabled": false,
"rank": 10
}
]
}

View file

@ -1,10 +0,0 @@
{
// Extension Manager
// @jupyterlab/extensionmanager-extension:plugin
// Extension manager settings.
// *********************************************
// Disclaimed Status
// Whether the user agrees the access to external web services and understands extensions may introduce security risks or contain malicious code that runs on his machine.
"disclaimed": true
}

View file

@ -1,34 +0,0 @@
{
"toolbar": [
{
"name": "new-launcher",
"command": "launcher:create",
"disabled": false,
"rank": 1
},
{
"name": "new-directory",
"command": "filebrowser:create-new-directory",
"disabled": false,
"rank": 10
},
{
"name": "uploader",
"command": "",
"disabled": false,
"rank": 20
},
{
"name": "refresh",
"command": "filebrowser:refresh",
"disabled": false,
"rank": 30
},
{
"name": "fileNameSearcher",
"command": "",
"disabled": false,
"rank": 40
}
]
}

View file

@ -1,16 +0,0 @@
{
// Text Editor
// @jupyterlab/fileeditor-extension:plugin
// Text editor settings.
// ***************************************
// Editor Configuration
// The configuration for all text editors; it will override the CodeMirror default configuration.
// If `fontFamily`, `fontSize` or `lineHeight` are `null`,
// values from current theme are used.
"editorConfig": {
"lineNumbers": true,
"autoClosingBrackets": false,
"theme": "jupyter"
}
}

View file

@ -1,17 +0,0 @@
{
"toolbar": [
{
"name": "refresh",
"command": "",
"disabled": false,
"rank": 10
},
{
"name": "trust",
"command": "",
"disabled": false,
"rank": 20
}
],
"trustByDefault": false
}

View file

@ -1,90 +0,0 @@
{
"toolbar": [
{
"name": "save",
"command": "",
"disabled": false,
"rank": 10
},
{
"name": "insert",
"command": "notebook:insert-cell-below",
"disabled": false,
"icon": "ui-components:add",
"rank": 20
},
{
"name": "cut",
"command": "notebook:cut-cell",
"disabled": false,
"rank": 21
},
{
"name": "copy",
"command": "notebook:copy-cell",
"disabled": false,
"rank": 22
},
{
"name": "paste",
"command": "notebook:paste-cell-below",
"disabled": false,
"rank": 23
},
{
"name": "run",
"command": "notebook:run-cell-and-select-next",
"disabled": false,
"rank": 30
},
{
"name": "interrupt",
"command": "notebook:interrupt-kernel",
"disabled": false,
"rank": 31
},
{
"name": "restart",
"command": "notebook:restart-kernel",
"disabled": false,
"rank": 32
},
{
"name": "restart-and-run",
"command": "notebook:restart-run-all",
"disabled": false,
"rank": 33
},
{
"name": "cellType",
"command": "",
"disabled": false,
"rank": 40
},
{
"name": "spacer",
"command": "",
"disabled": false,
"type": "spacer",
"rank": 100
},
{
"name": "interfaceSwitcher",
"command": "",
"disabled": false,
"rank": 990
},
{
"name": "kernelName",
"command": "",
"disabled": false,
"rank": 1000
},
{
"name": "executionProgress",
"command": "",
"disabled": false,
"rank": 1002
}
]
}

View file

@ -1,100 +0,0 @@
{
// Notebook
// @jupyterlab/notebook-extension:tracker
// Notebook settings.
// **************************************
// Automatically Start Preferred Kernel
// Whether to automatically start the preferred kernel.
"autoStartDefaultKernel": true,
// Code Cell Configuration
// The configuration for all code cells; it will override the CodeMirror default configuration.
"codeCellConfig": {
"lineNumbers": false,
"lineWrap": false
},
// Default cell type
// The default type (markdown, code, or raw) for new cells
"defaultCell": "code",
// Enable undo/redo actions at the notebook document level.
// Enables the undo/redo actions at the notebook document level; aka undoing within a cell may undo the latest notebook change that happen in another cell. This is deprecated and will be removed in 5.0.0.
"documentWideUndoRedo": false,
// Input History Scope
// Whether the line history for standard input (e.g. the ipdb prompt) should kept separately for different kernel sessions (`session`) or combined (`global`).
"inputHistoryScope": "global",
// Shut down kernel
// Whether to shut down or not the kernel when closing a notebook.
"kernelShutdown": false,
// Kernel status icon configuration
// Defines the position and components of execution progress indicator.
"kernelStatus": {
"showOnStatusBar": false,
"showProgress": true
},
// Markdown Cell Configuration
// The configuration for all markdown cells; it will override the CodeMirror default configuration.
"markdownCellConfig": {
"lineNumbers": false,
"matchBrackets": false,
"autoClosingBrackets": false
},
// The maximum number of output cells to be rendered in the output area.
// Defines the maximum number of output cells to be rendered in the output area for cells with many outputs. The output area will have a head and the remaining outputs will be trimmed and not displayed unless the user clicks on the information message. Set to 0 to have the complete display.
"maxNumberOutputs": 50,
// Number of cells to render outside de the viewport
// In 'full' windowing mode, this is the number of cells above and below the viewport.
"overscanCount": 1,
// Raw Cell Configuration
// The configuration for all raw cells; it will override the CodeMirror default configuration.
"rawCellConfig": {
"lineNumbers": false,
"matchBrackets": false,
"autoClosingBrackets": false
},
// Recording timing
// Should timing data be recorded in cell metadata
"recordTiming": false,
// Rendering Layout
// Global setting to define the rendering layout in notebooks. 'default' or 'side-by-side' are supported.
"renderingLayout": "default",
// Scroll past last cell
// Whether to be able to scroll so the last cell is at the top of the panel
"scrollPastEnd": true,
// Show editor for read-only Markdown cells
// Should an editor be shown for read-only markdown
"showEditorForReadOnlyMarkdown": true,
// Show hidden cells button if collapsed
// If set to true, a button is shown below collapsed headings, indicating how many cells are hidden beneath the collapsed heading.
"showHiddenCellsButton": true,
// Side-by-side left margin override
// Side-by-side left margin override.
"sideBySideLeftMarginOverride": "10px",
// Side-by-side output ratio
// For the side-by-side rendering, the side-by-side output ratio defines the width of the output vs the input. Set 1 for same size, > 1 for larger output, < 1 for smaller output.
"sideBySideOutputRatio": 1,
// Side-by-side right margin override
// Side-by-side right margin override.
"sideBySideRightMarginOverride": "10px",
// Windowing mode
// 'defer': Improve loading time - Wait for idle CPU cycles to attach out of viewport cells - 'full': Best performance with side effects - Attach to the DOM only cells in viewport - 'none': Worst performance without side effects - Attach all cells to the viewport
"windowingMode": "defer"
}

View file

@ -1,983 +0,0 @@
{
"shortcuts": [
{
"command": "application:activate-next-tab",
"keys": [
"Ctrl Shift ]"
],
"selector": "body",
"args": {}
},
{
"command": "application:activate-next-tab-bar",
"keys": [
"Ctrl Shift ."
],
"selector": "body",
"args": {}
},
{
"command": "application:activate-previous-tab",
"keys": [
"Ctrl Shift ["
],
"selector": "body",
"args": {}
},
{
"command": "application:activate-previous-tab-bar",
"keys": [
"Ctrl Shift ,"
],
"selector": "body",
"args": {}
},
{
"command": "application:close",
"keys": [
"Alt W"
],
"selector": ".jp-Activity",
"args": {}
},
{
"command": "application:toggle-left-area",
"keys": [
"Accel B"
],
"selector": "body",
"args": {}
},
{
"command": "application:toggle-mode",
"keys": [
"Accel Shift D"
],
"selector": "body",
"args": {}
},
{
"command": "apputils:activate-command-palette",
"keys": [
"Accel Shift C"
],
"selector": "body",
"args": {}
},
{
"command": "apputils:display-shortcuts",
"keys": [
"Accel Shift H"
],
"selector": "body",
"args": {}
},
{
"command": "apputils:print",
"keys": [
"Accel P"
],
"selector": "body",
"args": {}
},
{
"command": "completer:invoke-console",
"keys": [
"Tab"
],
"selector": ".jp-CodeConsole-promptCell .jp-mod-completer-enabled",
"args": {}
},
{
"command": "completer:invoke-file",
"keys": [
"Tab"
],
"selector": ".jp-FileEditor .jp-mod-completer-enabled",
"args": {}
},
{
"command": "completer:invoke-notebook",
"keys": [
"Tab"
],
"selector": ".jp-Notebook.jp-mod-editMode .jp-mod-completer-enabled",
"args": {}
},
{
"command": "console:linebreak",
"keys": [
"Enter"
],
"selector": ".jp-CodeConsole[data-jp-interaction-mode='notebook'] .jp-CodeConsole-promptCell",
"args": {}
},
{
"command": "console:linebreak",
"keys": [
"Accel Enter"
],
"selector": ".jp-CodeConsole[data-jp-interaction-mode='terminal'] .jp-CodeConsole-promptCell",
"args": {}
},
{
"command": "console:run-forced",
"keys": [
"Shift Enter"
],
"selector": ".jp-CodeConsole[data-jp-interaction-mode='notebook'] .jp-CodeConsole-promptCell",
"args": {}
},
{
"command": "console:run-forced",
"keys": [
"Shift Enter"
],
"selector": ".jp-CodeConsole[data-jp-interaction-mode='terminal'] .jp-CodeConsole-promptCell",
"args": {}
},
{
"command": "console:run-unforced",
"keys": [
"Enter"
],
"selector": ".jp-CodeConsole[data-jp-interaction-mode='terminal'] .jp-CodeConsole-promptCell",
"args": {}
},
{
"command": "debugger:continue",
"keys": [
"F9"
],
"selector": "body",
"args": {}
},
{
"command": "debugger:next",
"keys": [
"F10"
],
"selector": "body",
"args": {}
},
{
"command": "debugger:show-panel",
"keys": [
"Accel Shift E"
],
"selector": "body",
"args": {}
},
{
"command": "debugger:stepIn",
"keys": [
"F11"
],
"selector": "body",
"args": {}
},
{
"command": "debugger:stepOut",
"keys": [
"Shift F11"
],
"selector": "body",
"args": {}
},
{
"command": "debugger:terminate",
"keys": [
"Shift F9"
],
"selector": "body",
"args": {}
},
{
"command": "docmanager:save",
"keys": [
"Accel S"
],
"selector": "body",
"args": {}
},
{
"command": "docmanager:save-as",
"keys": [
"Accel Shift S"
],
"selector": "body",
"args": {}
},
{
"command": "documentsearch:end",
"keys": [
"Escape"
],
"selector": ".jp-mod-searchable",
"args": {}
},
{
"command": "documentsearch:highlightNext",
"keys": [
"Accel G"
],
"selector": ".jp-mod-searchable",
"args": {}
},
{
"command": "documentsearch:highlightPrevious",
"keys": [
"Accel Shift G"
],
"selector": ".jp-mod-searchable",
"args": {}
},
{
"command": "documentsearch:start",
"keys": [
"Accel F"
],
"selector": ".jp-mod-searchable",
"args": {}
},
{
"command": "editmenu:redo",
"keys": [
"Accel Shift Z"
],
"selector": "[data-jp-undoer]",
"args": {}
},
{
"command": "editmenu:undo",
"keys": [
"Accel Z"
],
"selector": "[data-jp-undoer]",
"args": {}
},
{
"command": "extensionmanager:show-panel",
"keys": [
"Accel Shift X"
],
"selector": "body",
"args": {}
},
{
"command": "filebrowser:copy",
"keys": [
"Accel C"
],
"selector": ".jp-DirListing-content .jp-DirListing-itemText",
"args": {}
},
{
"command": "filebrowser:cut",
"keys": [
"Accel X"
],
"selector": ".jp-DirListing-content .jp-DirListing-itemText",
"args": {}
},
{
"command": "filebrowser:delete",
"keys": [
"Delete"
],
"selector": ".jp-DirListing-content .jp-DirListing-itemText",
"args": {}
},
{
"command": "filebrowser:duplicate",
"keys": [
"Accel D"
],
"selector": ".jp-DirListing-content .jp-DirListing-itemText",
"args": {}
},
{
"command": "filebrowser:go-up",
"keys": [
"Backspace"
],
"selector": ".jp-DirListing:focus",
"args": {}
},
{
"command": "filebrowser:go-up",
"keys": [
"Backspace"
],
"selector": ".jp-DirListing-content .jp-DirListing-itemText",
"args": {}
},
{
"command": "filebrowser:paste",
"keys": [
"Accel V"
],
"selector": ".jp-DirListing-content .jp-DirListing-itemText",
"args": {}
},
{
"command": "filebrowser:rename",
"keys": [
"F2"
],
"selector": ".jp-DirListing-content .jp-DirListing-itemText",
"args": {}
},
{
"command": "filebrowser:toggle-main",
"keys": [
"Accel Shift F"
],
"selector": "body",
"args": {}
},
{
"command": "filemenu:close-and-cleanup",
"keys": [
"Ctrl Shift Q"
],
"selector": ".jp-Activity",
"args": {}
},
{
"command": "imageviewer:flip-horizontal",
"keys": [
"H"
],
"selector": ".jp-ImageViewer",
"args": {}
},
{
"command": "imageviewer:flip-vertical",
"keys": [
"V"
],
"selector": ".jp-ImageViewer",
"args": {}
},
{
"command": "imageviewer:invert-colors",
"keys": [
"I"
],
"selector": ".jp-ImageViewer",
"args": {}
},
{
"command": "imageviewer:reset-image",
"keys": [
"0"
],
"selector": ".jp-ImageViewer",
"args": {}
},
{
"command": "imageviewer:rotate-clockwise",
"keys": [
"]"
],
"selector": ".jp-ImageViewer",
"args": {}
},
{
"command": "imageviewer:rotate-counterclockwise",
"keys": [
"["
],
"selector": ".jp-ImageViewer",
"args": {}
},
{
"command": "imageviewer:zoom-in",
"keys": [
"="
],
"selector": ".jp-ImageViewer",
"args": {}
},
{
"command": "imageviewer:zoom-out",
"keys": [
"-"
],
"selector": ".jp-ImageViewer",
"args": {}
},
{
"command": "inspector:close",
"keys": [
"Accel I"
],
"selector": "body[data-jp-inspector='open']",
"args": {}
},
{
"command": "inspector:open",
"keys": [
"Accel I"
],
"selector": "body",
"args": {}
},
{
"command": "kernelmenu:interrupt",
"keys": [
"I",
"I"
],
"selector": "[data-jp-kernel-user]:focus",
"args": {}
},
{
"command": "kernelmenu:restart",
"keys": [
"0",
"0"
],
"selector": "[data-jp-kernel-user]:focus",
"args": {}
},
{
"command": "launcher:create",
"keys": [
"Accel Shift L"
],
"selector": "body",
"args": {}
},
{
"command": "notebook:change-cell-to-code",
"keys": [
"Y"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:change-cell-to-heading-1",
"keys": [
"1"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:change-cell-to-heading-2",
"keys": [
"2"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:change-cell-to-heading-3",
"keys": [
"3"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:change-cell-to-heading-4",
"keys": [
"4"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:change-cell-to-heading-5",
"keys": [
"5"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:change-cell-to-heading-6",
"keys": [
"6"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:change-cell-to-markdown",
"keys": [
"M"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:change-cell-to-raw",
"keys": [
"R"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:collapse-all-headings",
"keys": [
"Ctrl Shift ArrowLeft"
],
"selector": ".jp-Notebook.jp-mod-commandMode",
"args": {}
},
{
"command": "notebook:copy-cell",
"keys": [
"C"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:cut-cell",
"keys": [
"X"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:delete-cell",
"keys": [
"D",
"D"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:enter-command-mode",
"keys": [
"Escape"
],
"selector": ".jp-Notebook.jp-mod-editMode",
"args": {}
},
{
"command": "notebook:enter-command-mode",
"keys": [
"Ctrl M"
],
"selector": ".jp-Notebook.jp-mod-editMode",
"args": {}
},
{
"command": "notebook:enter-edit-mode",
"keys": [
"Enter"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:expand-all-headings",
"keys": [
"Ctrl Shift ArrowRight"
],
"selector": ".jp-Notebook.jp-mod-commandMode",
"args": {}
},
{
"command": "notebook:extend-marked-cells-above",
"keys": [
"Shift ArrowUp"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:extend-marked-cells-above",
"keys": [
"Shift K"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:extend-marked-cells-below",
"keys": [
"Shift ArrowDown"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:extend-marked-cells-below",
"keys": [
"Shift J"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:extend-marked-cells-bottom",
"keys": [
"Shift End"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:extend-marked-cells-top",
"keys": [
"Shift Home"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:insert-cell-above",
"keys": [
"A"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:insert-cell-below",
"keys": [
"B"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:insert-heading-above",
"keys": [
"Shift A"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:insert-heading-below",
"keys": [
"Shift B"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:merge-cell-above",
"keys": [
"Ctrl Backspace"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:merge-cell-below",
"keys": [
"Ctrl Shift M"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:merge-cells",
"keys": [
"Shift M"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:move-cell-down",
"keys": [
"Ctrl Shift ArrowDown"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:move-cell-up",
"keys": [
"Ctrl Shift ArrowUp"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:move-cursor-down",
"keys": [
"ArrowDown"
],
"selector": "[data-jp-traversable]:focus",
"args": {}
},
{
"command": "notebook:move-cursor-down",
"keys": [
"J"
],
"selector": "[data-jp-traversable]:focus",
"args": {}
},
{
"command": "notebook:move-cursor-heading-above-or-collapse",
"keys": [
"ArrowLeft"
],
"selector": ".jp-Notebook:focus.jp-mod-commandMode",
"args": {}
},
{
"command": "notebook:move-cursor-heading-below-or-expand",
"keys": [
"ArrowRight"
],
"selector": ".jp-Notebook:focus.jp-mod-commandMode",
"args": {}
},
{
"command": "notebook:move-cursor-up",
"keys": [
"ArrowUp"
],
"selector": "[data-jp-traversable]:focus",
"args": {}
},
{
"command": "notebook:move-cursor-up",
"keys": [
"K"
],
"selector": "[data-jp-traversable]:focus",
"args": {}
},
{
"command": "notebook:paste-cell-below",
"keys": [
"V"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:redo-cell-action",
"keys": [
"Shift Z"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:run-cell",
"keys": [],
"macKeys": [
"Ctrl Enter"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:run-cell",
"keys": [],
"macKeys": [
"Ctrl Enter"
],
"selector": ".jp-Notebook.jp-mod-editMode",
"args": {}
},
{
"command": "notebook:run-cell",
"keys": [
"Accel Enter"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:run-cell",
"keys": [
"Accel Enter"
],
"selector": ".jp-Notebook.jp-mod-editMode",
"args": {}
},
{
"command": "notebook:run-cell-and-insert-below",
"keys": [
"Alt Enter"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:run-cell-and-insert-below",
"keys": [
"Alt Enter"
],
"selector": ".jp-Notebook.jp-mod-editMode",
"args": {}
},
{
"command": "notebook:run-cell-and-select-next",
"keys": [
"Shift Enter"
],
"selector": ".jp-Notebook.jp-mod-editMode",
"args": {}
},
{
"command": "notebook:select-all",
"keys": [
"Accel A"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:toggle-render-side-by-side-current",
"keys": [
"Shift R"
],
"macKeys": [
"Ctrl Enter"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "notebook:undo-cell-action",
"keys": [
"Z"
],
"macKeys": [
"Ctrl Enter"
],
"selector": ".jp-Notebook:focus",
"args": {}
},
{
"command": "property-inspector:show-panel",
"keys": [
"Accel Shift U"
],
"selector": "body",
"args": {}
},
{
"command": "runmenu:run",
"keys": [
"Shift Enter"
],
"selector": "[data-jp-code-runner]",
"args": {}
},
{
"command": "running:show-panel",
"keys": [
"Accel Shift B"
],
"selector": "body",
"args": {}
},
{
"command": "settingeditor:open",
"keys": [
"Accel ,"
],
"selector": "body",
"args": {}
},
{
"command": "settingeditor:save",
"keys": [
"Accel S"
],
"selector": ".jp-SettingEditor",
"args": {}
},
{
"command": "tabsmenu:activate-previously-used-tab",
"keys": [
"Accel Shift '"
],
"selector": "body",
"args": {}
},
{
"command": "toc:show-panel",
"keys": [
"Accel Shift K"
],
"selector": "body",
"args": {}
},
{
"command": "tooltip:dismiss",
"keys": [
"Escape"
],
"selector": "body.jp-mod-tooltip .jp-Notebook",
"args": {}
},
{
"command": "tooltip:dismiss",
"keys": [
"Escape"
],
"selector": "body.jp-mod-tooltip .jp-CodeConsole-promptCell",
"args": {}
},
{
"command": "tooltip:launch-console",
"keys": [
"Shift Tab"
],
"selector": ".jp-CodeConsole-promptCell .jp-InputArea-editor:not(.jp-mod-has-primary-selection):not(.jp-mod-in-leading-whitespace)",
"args": {}
},
{
"command": "tooltip:launch-file",
"keys": [
"Shift Tab"
],
"selector": ".jp-FileEditor .jp-CodeMirrorEditor:not(.jp-mod-has-primary-selection):not(.jp-mod-in-leading-whitespace)",
"args": {}
},
{
"command": "tooltip:launch-notebook",
"keys": [
"Shift Tab"
],
"selector": ".jp-Notebook.jp-mod-editMode .jp-InputArea-editor:not(.jp-mod-has-primary-selection):not(.jp-mod-in-leading-whitespace):not(.jp-mod-completer-active)",
"args": {}
},
{
"command": "viewmenu:line-numbering",
"keys": [
"Shift L"
],
"selector": ".jp-Notebook.jp-mod-commandMode",
"args": {}
},
{
"command": "notebook:split-cell-at-cursor",
"keys": [
"Ctrl Shift -"
],
"selector": ".jp-Notebook.jp-mod-editMode",
"args": {}
},
{
"command": "notebook:toggle-all-cell-line-numbers",
"keys": [
"Shift L"
],
"selector": ".jp-Notebook:focus",
"args": {}
}
]
}

View file

@ -1,8 +0,0 @@
{
// Terminal
// @jupyterlab/terminal-extension:plugin
// Terminal settings.
// *************************************
}

View file

@ -1 +0,0 @@
{"data":{"layout-restorer:data":{"main":{"dock":{"type":"tab-area","currentIndex":0,"widgets":[]}},"down":{"size":0,"widgets":[]},"left":{"collapsed":false,"current":"filebrowser","widgets":["filebrowser","running-sessions","@jupyterlab/toc:plugin","extensionmanager.main-view"]},"right":{"collapsed":true,"widgets":["jp-property-inspector","debugger-sidebar"]},"relativeSizes":[0.22233718457205265,0.7776628154279474,0]}},"metadata":{"id":"auto-0"}}

View file

@ -1 +0,0 @@
{"data":{"layout-restorer:data":{"main":{"dock":{"type":"tab-area","currentIndex":0,"widgets":["notebook:notebooks/count_tf_df_analysis.ipynb","notebook:notebooks/exploration_soft_skills.ipynb","notebook:notebooks/exploration_coop_postings.ipynb","notebook:notebooks/tf_idf_programs.ipynb"]},"current":"notebook:notebooks/count_tf_df_analysis.ipynb"},"down":{"size":0,"widgets":[]},"left":{"collapsed":false,"visible":true,"current":"filebrowser","widgets":["filebrowser","running-sessions","@jupyterlab/toc:plugin","extensionmanager.main-view"],"widgetStates":{"jp-running-sessions":{"sizes":[0.25,0.25,0.25,0.25],"expansionStates":[false,false,false,false]},"extensionmanager.main-view":{"sizes":[0,1,0],"expansionStates":[false,false,false]}}},"right":{"collapsed":true,"visible":true,"widgets":["jp-property-inspector","debugger-sidebar"],"widgetStates":{"jp-debugger-sidebar":{"sizes":[0.2,0.2,0.2,0.2,0.2],"expansionStates":[false,false,false,false,false]}}},"relativeSizes":[0.1298499741334713,0.8701500258665287,0],"top":{"simpleVisibility":true}},"file-browser-filebrowser:cwd":{"path":"notebooks"},"notebook:notebooks/count_tf_df_analysis.ipynb":{"data":{"path":"notebooks/count_tf_df_analysis.ipynb","factory":"Notebook"}},"notebook:notebooks/exploration_soft_skills.ipynb":{"data":{"path":"notebooks/exploration_soft_skills.ipynb","factory":"Notebook"}},"notebook:notebooks/exploration_coop_postings.ipynb":{"data":{"path":"notebooks/exploration_coop_postings.ipynb","factory":"Notebook"}},"notebook:notebooks/tf_idf_programs.ipynb":{"data":{"path":"notebooks/tf_idf_programs.ipynb","factory":"Notebook"}}},"metadata":{"id":"auto-1"}}

View file

@ -1 +0,0 @@
{"data":{"layout-restorer:data":{"main":{"dock":{"type":"tab-area","currentIndex":3,"widgets":["notebook:notebooks/figures_tf_idf_programe_name.ipynb","notebook:notebooks/tf_idf_timeline.ipynb","notebook:notebooks/tf_idf_programs.ipynb","notebook:notebooks/count_tf_df_analysis.ipynb","notebook:notebooks/exploration_coop_postings.ipynb","notebook:notebooks/exploration_soft_skills.ipynb"]},"current":"notebook:notebooks/count_tf_df_analysis.ipynb"},"down":{"size":0,"widgets":[]},"left":{"collapsed":false,"current":"filebrowser","widgets":["filebrowser","running-sessions","@jupyterlab/toc:plugin","extensionmanager.main-view"]},"right":{"collapsed":true,"widgets":["jp-property-inspector","debugger-sidebar"]},"relativeSizes":[0.22236718127129082,0.7776328187287092,0]},"file-browser-filebrowser:cwd":{"path":"notebooks"},"notebook:notebooks/exploration_coop_postings.ipynb":{"data":{"path":"notebooks/exploration_coop_postings.ipynb","factory":"Notebook"}},"notebook:notebooks/exploration_soft_skills.ipynb":{"data":{"path":"notebooks/exploration_soft_skills.ipynb","factory":"Notebook"}},"notebook:notebooks/figures_tf_idf_programe_name.ipynb":{"data":{"path":"notebooks/figures_tf_idf_programe_name.ipynb","factory":"Notebook"}},"notebook:notebooks/tf_idf_timeline.ipynb":{"data":{"path":"notebooks/tf_idf_timeline.ipynb","factory":"Notebook"}},"notebook:notebooks/tf_idf_programs.ipynb":{"data":{"path":"notebooks/tf_idf_programs.ipynb","factory":"Notebook"}},"notebook:notebooks/count_tf_df_analysis.ipynb":{"data":{"path":"notebooks/count_tf_df_analysis.ipynb","factory":"Notebook"}}},"metadata":{"id":"auto-2"}}

View file

@ -1 +0,0 @@
{"data":{"layout-restorer:data":{"main":{"dock":{"type":"tab-area","currentIndex":2,"widgets":["notebook:notebooks/Untitled.ipynb","notebook:notebooks/figures_tf_idf_programe_name.ipynb","notebook:notebooks/figures_tf_idf_years.ipynb"]},"current":"notebook:notebooks/figures_tf_idf_years.ipynb"},"down":{"size":0,"widgets":[]},"left":{"collapsed":false,"visible":true,"current":"@jupyterlab/toc:plugin","widgets":["filebrowser","running-sessions","@jupyterlab/toc:plugin","extensionmanager.main-view"]},"right":{"collapsed":true,"visible":true,"widgets":["jp-property-inspector","debugger-sidebar"]},"relativeSizes":[0.2664543524416136,0.7335456475583864,0],"top":{"simpleVisibility":true}},"file-browser-filebrowser:cwd":{"path":"notebooks"},"notebook:notebooks/Untitled.ipynb":{"data":{"path":"notebooks/Untitled.ipynb","factory":"Notebook"}},"notebook:notebooks/figures_tf_idf_programe_name.ipynb":{"data":{"path":"notebooks/figures_tf_idf_programe_name.ipynb","factory":"Notebook"}},"notebook:notebooks/figures_tf_idf_years.ipynb":{"data":{"path":"notebooks/figures_tf_idf_years.ipynb","factory":"Notebook"}}},"metadata":{"id":"auto-3"}}

View file

@ -1 +0,0 @@
{"data":{"layout-restorer:data":{"main":{"dock":{"type":"tab-area","currentIndex":1,"widgets":["notebook:notebooks/count_tf_df_analysis.ipynb"]},"current":"notebook:notebooks/count_tf_df_analysis.ipynb"},"down":{"size":0,"widgets":[]},"left":{"collapsed":false,"current":"filebrowser","widgets":["filebrowser","running-sessions","@jupyterlab/toc:plugin","extensionmanager.main-view"]},"right":{"collapsed":true,"widgets":["jp-property-inspector","debugger-sidebar"]},"relativeSizes":[0.22233718457205265,0.7776628154279474,0]},"file-browser-filebrowser:cwd":{"path":"notebooks"},"notebook:notebooks/count_tf_df_analysis.ipynb":{"data":{"path":"notebooks/count_tf_df_analysis.ipynb","factory":"Notebook"}}},"metadata":{"id":"auto-4"}}

View file

@ -1 +0,0 @@
{"data":{"layout-restorer:data":{"main":{"dock":{"type":"tab-area","currentIndex":3,"widgets":["notebook:notebooks/figures_tf_idf_years.ipynb","notebook:notebooks/tf_idf_programs.ipynb","notebook:notebooks/tf_idf_timeline.ipynb"]},"current":"notebook:notebooks/tf_idf_timeline.ipynb"},"down":{"size":0,"widgets":[]},"left":{"collapsed":false,"visible":true,"current":"filebrowser","widgets":["filebrowser","running-sessions","@jupyterlab/toc:plugin","extensionmanager.main-view"]},"right":{"collapsed":true,"visible":true,"widgets":["jp-property-inspector","debugger-sidebar"]},"relativeSizes":[0.07622228970543578,0.9237777102945642,0],"top":{"simpleVisibility":true}},"file-browser-filebrowser:cwd":{"path":"notebooks"},"notebook:notebooks/figures_tf_idf_years.ipynb":{"data":{"path":"notebooks/figures_tf_idf_years.ipynb","factory":"Notebook"}},"notebook:notebooks/tf_idf_programs.ipynb":{"data":{"path":"notebooks/tf_idf_programs.ipynb","factory":"Notebook"}},"notebook:notebooks/tf_idf_timeline.ipynb":{"data":{"path":"notebooks/tf_idf_timeline.ipynb","factory":"Notebook"}}},"metadata":{"id":"auto-9"}}

View file

@ -1 +0,0 @@
{"data":{"layout-restorer:data":{"main":{"dock":{"type":"tab-area","currentIndex":1,"widgets":["notebook:notebooks/count_tf_df_analysis.ipynb"]},"current":"notebook:notebooks/count_tf_df_analysis.ipynb"},"down":{"size":0,"widgets":[]},"left":{"collapsed":false,"visible":true,"current":"filebrowser","widgets":["filebrowser","running-sessions","@jupyterlab/toc:plugin","extensionmanager.main-view"],"widgetStates":{"jp-running-sessions":{"sizes":[0.25,0.25,0.25,0.25],"expansionStates":[false,false,false,false]},"extensionmanager.main-view":{"sizes":[0.3333333333333333,0.3333333333333333,0.3333333333333333],"expansionStates":[false,false,false]}}},"right":{"collapsed":true,"visible":true,"widgets":["jp-property-inspector","debugger-sidebar"],"widgetStates":{"jp-debugger-sidebar":{"sizes":[0.2,0.2,0.2,0.2,0.2],"expansionStates":[false,false,false,false,false]}}},"relativeSizes":[0.1298499741334713,0.8701500258665287,0],"top":{"simpleVisibility":true}},"file-browser-filebrowser:cwd":{"path":"notebooks"},"notebook:notebooks/count_tf_df_analysis.ipynb":{"data":{"path":"notebooks/count_tf_df_analysis.ipynb","factory":"Notebook"}}},"metadata":{"id":"auto-a"}}

View file

@ -1 +0,0 @@
{"data":{"layout-restorer:data":{"main":{"dock":{"type":"tab-area","currentIndex":1,"widgets":["notebook:notebooks/count_tf_df_analysis.ipynb","notebook:notebooks/tf_idf_timeline.ipynb","notebook:notebooks/tf_idf_programs.ipynb"]},"current":"notebook:notebooks/tf_idf_timeline.ipynb"},"down":{"size":0,"widgets":[]},"left":{"collapsed":false,"current":"filebrowser","widgets":["filebrowser","running-sessions","@jupyterlab/toc:plugin","extensionmanager.main-view"]},"right":{"collapsed":true,"widgets":["jp-property-inspector","debugger-sidebar"]},"relativeSizes":[0.22236718127129082,0.7776328187287092,0]},"file-browser-filebrowser:cwd":{"path":"notebooks"},"notebook:notebooks/count_tf_df_analysis.ipynb":{"data":{"path":"notebooks/count_tf_df_analysis.ipynb","factory":"Notebook"}},"notebook:notebooks/tf_idf_timeline.ipynb":{"data":{"path":"notebooks/tf_idf_timeline.ipynb","factory":"Notebook"}},"notebook:notebooks/tf_idf_programs.ipynb":{"data":{"path":"notebooks/tf_idf_programs.ipynb","factory":"Notebook"}}},"metadata":{"id":"auto-m"}}

View file

@ -1 +0,0 @@
{"data":{"layout-restorer:data":{"main":{"dock":{"type":"tab-area","currentIndex":0,"widgets":[]}},"down":{"size":0,"widgets":[]},"left":{"collapsed":false,"visible":true,"current":"filebrowser","widgets":["filebrowser","running-sessions","@jupyterlab/toc:plugin","extensionmanager.main-view"]},"right":{"collapsed":true,"visible":true,"widgets":["jp-property-inspector","debugger-sidebar"]},"relativeSizes":[0.3424283765347885,0.6575716234652115,0],"top":{"simpleVisibility":true}}},"metadata":{"id":"auto-N"}}

View file

@ -1 +0,0 @@
{"data":{"layout-restorer:data":{"main":{"dock":{"type":"tab-area","currentIndex":1,"widgets":["notebook:notebooks/tf_idf_programs.ipynb"]},"current":"notebook:notebooks/tf_idf_programs.ipynb"},"down":{"size":0,"widgets":[]},"left":{"collapsed":false,"visible":true,"current":"extensionmanager.main-view","widgets":["filebrowser","running-sessions","@jupyterlab/toc:plugin","extensionmanager.main-view"]},"right":{"collapsed":true,"visible":true,"widgets":["jp-property-inspector","debugger-sidebar"]},"relativeSizes":[0.07622228970543578,0.9237777102945642,0],"top":{"simpleVisibility":true}},"file-browser-filebrowser:cwd":{"path":"notebooks"},"notebook:notebooks/tf_idf_programs.ipynb":{"data":{"path":"notebooks/tf_idf_programs.ipynb","factory":"Notebook"}}},"metadata":{"id":"auto-q"}}

View file

@ -1 +0,0 @@
{"data":{"layout-restorer:data":{"main":{"dock":{"type":"tab-area","currentIndex":1,"widgets":["notebook:notebooks/count_tf_df_analysis.ipynb"]},"current":"notebook:notebooks/count_tf_df_analysis.ipynb"},"down":{"size":0,"widgets":[]},"left":{"collapsed":false,"visible":true,"current":"filebrowser","widgets":["filebrowser","running-sessions","@jupyterlab/toc:plugin","extensionmanager.main-view"],"widgetStates":{"jp-running-sessions":{"sizes":[0.25,0.25,0.25,0.25],"expansionStates":[false,false,false,false]},"extensionmanager.main-view":{"sizes":[0.3333333333333333,0.3333333333333333,0.3333333333333333],"expansionStates":[false,false,false]}}},"right":{"collapsed":true,"visible":true,"widgets":["jp-property-inspector","debugger-sidebar"],"widgetStates":{"jp-debugger-sidebar":{"sizes":[0.2,0.2,0.2,0.2,0.2],"expansionStates":[false,false,false,false,false]}}},"relativeSizes":[0.1298499741334713,0.8701500258665287,0],"top":{"simpleVisibility":true}},"file-browser-filebrowser:cwd":{"path":"notebooks"},"notebook:notebooks/count_tf_df_analysis.ipynb":{"data":{"path":"notebooks/count_tf_df_analysis.ipynb","factory":"Notebook"}}},"metadata":{"id":"auto-t"}}

View file

@ -1 +0,0 @@
{"data":{"layout-restorer:data":{"main":{"dock":{"type":"tab-area","currentIndex":0,"widgets":["notebook:notebooks/figures_tf_idf_years.ipynb"]},"current":"notebook:notebooks/figures_tf_idf_years.ipynb"},"down":{"size":0,"widgets":[]},"left":{"collapsed":false,"visible":true,"current":"filebrowser","widgets":["filebrowser","running-sessions","@jupyterlab/toc:plugin","extensionmanager.main-view"]},"right":{"collapsed":true,"visible":true,"widgets":["jp-property-inspector","debugger-sidebar"]},"relativeSizes":[0.15561066336019838,0.8443893366398016,0],"top":{"simpleVisibility":true}},"file-browser-filebrowser:cwd":{"path":"notebooks"},"notebook:notebooks/figures_tf_idf_years.ipynb":{"data":{"path":"notebooks/figures_tf_idf_years.ipynb","factory":"Notebook"}}},"metadata":{"id":"auto-V"}}

View file

@ -1 +0,0 @@
{"data":{"layout-restorer:data":{"main":{"dock":{"type":"tab-area","currentIndex":0,"widgets":["notebook:notebooks/figures_tf_idf_years.ipynb"]},"current":"notebook:notebooks/figures_tf_idf_years.ipynb"},"down":{"size":0,"widgets":[]},"left":{"collapsed":false,"visible":true,"current":"filebrowser","widgets":["filebrowser","running-sessions","@jupyterlab/toc:plugin","extensionmanager.main-view"]},"right":{"collapsed":false,"visible":true,"current":"debugger-sidebar","widgets":["jp-property-inspector","debugger-sidebar"]},"relativeSizes":[0.07624544349939247,0.8475091130012151,0.07624544349939247],"top":{"simpleVisibility":true}},"file-browser-filebrowser:cwd":{"path":"notebooks"},"notebook:notebooks/figures_tf_idf_years.ipynb":{"data":{"path":"notebooks/figures_tf_idf_years.ipynb","factory":"Notebook"}}},"metadata":{"id":"auto-W"}}

View file

@ -1 +0,0 @@
{"data":{"layout-restorer:data":{"main":{"dock":{"type":"tab-area","currentIndex":0,"widgets":[]}},"down":{"size":0,"widgets":[]},"left":{"collapsed":false,"current":"filebrowser","widgets":["filebrowser","running-sessions","@jupyterlab/toc:plugin","extensionmanager.main-view"]},"right":{"collapsed":true,"widgets":["jp-property-inspector","debugger-sidebar"]},"relativeSizes":[0.22233718457205265,0.7776628154279474,0]}},"metadata":{"id":"auto-w"}}

View file

@ -1 +0,0 @@
{"data":{"layout-restorer:data":{"main":{"dock":{"type":"tab-area","currentIndex":0,"widgets":[]}},"down":{"size":0,"widgets":[]},"left":{"collapsed":false,"visible":true,"current":"filebrowser","widgets":["filebrowser","running-sessions","@jupyterlab/toc:plugin","extensionmanager.main-view"],"widgetStates":{"jp-running-sessions":{"sizes":[0.25,0.25,0.25,0.25],"expansionStates":[false,false,false,false]},"extensionmanager.main-view":{"sizes":[0.3333333333333333,0.3333333333333333,0.3333333333333333],"expansionStates":[false,false,false]}}},"right":{"collapsed":true,"visible":true,"widgets":["jp-property-inspector","debugger-sidebar"],"widgetStates":{"jp-debugger-sidebar":{"sizes":[0.2,0.2,0.2,0.2,0.2],"expansionStates":[false,false,false,false,false]}}},"relativeSizes":[0.1298499741334713,0.8701500258665287,0],"top":{"simpleVisibility":true}}},"metadata":{"id":"auto-z"}}

View file

@ -1 +0,0 @@
{"data":{"layout-restorer:data":{"main":{"dock":{"type":"tab-area","currentIndex":0,"widgets":["notebook:Untitled.ipynb"]},"current":"notebook:Untitled.ipynb"},"down":{"size":0,"widgets":[]},"left":{"collapsed":false,"visible":true,"current":"filebrowser","widgets":["filebrowser","running-sessions","@jupyterlab/toc:plugin","extensionmanager.main-view"],"widgetStates":{"jp-running-sessions":{"sizes":[0.25,0.25,0.25,0.25],"expansionStates":[false,false,false,false]},"extensionmanager.main-view":{"sizes":[0.3333333333333333,0.3333333333333333,0.3333333333333333],"expansionStates":[false,false,false]}}},"right":{"collapsed":true,"visible":true,"widgets":["jp-property-inspector","debugger-sidebar"],"widgetStates":{"jp-debugger-sidebar":{"sizes":[0.2,0.2,0.2,0.2,0.2],"expansionStates":[false,false,false,false,false]}}},"relativeSizes":[0.25397835773392746,0.7460216422660726,0],"top":{"simpleVisibility":true}},"file-browser-filebrowser:cwd":{"path":""},"notebook:Untitled.ipynb":{"data":{"path":"Untitled.ipynb","factory":"Notebook"}}},"metadata":{"id":"default"}}

View file

@ -1 +0,0 @@
{"data":{"layout-restorer:data":{"main":{"dock":{"type":"tab-area","currentIndex":0,"widgets":["notebook:Untitled.ipynb"]},"mode":"multiple-document","current":"notebook:Untitled.ipynb"},"left":{"collapsed":false,"current":"running-sessions","widgets":["filebrowser","running-sessions","command-palette","tab-manager"]},"right":{"collapsed":true,"widgets":[]}},"notebook:Untitled.ipynb":{"data":{"path":"Untitled.ipynb","factory":"Notebook"}}},"metadata":{"id":"/lab"}}

View file

@ -1 +0,0 @@
2019-06-19T05:20:03.181486

View file

@ -1,9 +0,0 @@
{
"load_extensions": {
"nbextensions_configurator/config_menu/main": true,
"hinterland/hinterland": true,
"jupyter_tabnine/main": true,
"jupyter-js-widgets/extension": true,
"contrib_nbextensions_help_item/main": true
}
}

View file

@ -1,5 +0,0 @@
{
"load_extensions": {
"nbextensions_configurator/tree_tab/main": true
}
}

View file

@ -1,29 +0,0 @@
{
"0fb1f2828eeeae418602193a4d04d5ccd121dc74": {
"seen": true
},
"d564445e21a7603ceaf5b28e4e981ac33d23905b": {
"seen": true
},
"e90082157ab36fe43a156f798be33af1f0101d8a": {
"seen": true
},
"608d7f891761d97403a2faf16de02aff3dda2895": {
"seen": true
},
"6c7c5d359b52a7ce16f1e251efb0e609a9c4e9ef": {
"seen": true
},
"a8587a7634f266c21a3498ad4b619099dab155d4": {
"seen": true
},
"5122698b39c2ff9417deb80bd329aee257a51be0": {
"seen": true
},
"b9d150ecb5e02a8359329ac6f34bfa41d1209f9e": {
"seen": true
},
"c8e6c57a45295d2f0982437c629c8ea5408700b7": {
"seen": true
}
}

View file

@ -12,17 +12,16 @@ git submodule update
# What directories should be installable by all users including the root user
base=(
zsh
vim
nvim
# tmux
fzf
git
wezterm
)
# Folders that should, or only need to be installed for a local user on macOS
useronly_macos=(
zsh
yabai
skhd
oh-my-zsh
@ -42,9 +41,12 @@ useronly=(
gh
jupyter
parallel
sk
# sk
tox
firefox
direnv
starship
# p10k
)
# Files to ignore during stow
@ -69,12 +71,12 @@ stowit() {
}
# Function to check if the OS is macOS
is_macos() {
[[ "$(uname)" == "Darwin" ]]
}
is_linux() {
[[ "$(uname)" == "Linux" ]]
get_os() {
case "$(uname)" in
Darwin) echo "macos";;
Linux) echo "linux";;
*) echo "unknown";;
esac
}
# Function to automate firefox profile updater with expect
@ -108,22 +110,25 @@ for app in "${base[@]}"; do
stowit "${HOME}" "${app}"
done
# Setup useronly_macos folders only for macOS
if is_macos; then
case get_os in
"macos")
for app in "${useronly_macos[@]}"; do
if [ "$(id -u)" -ne 0 ]; then
stowit "${HOME}" "${app}"
fi
done
fi
if is_linux; then
;;
"linux")
for app in "${useronly_linux[@]}"; do
if [ "$(id -u)" -ne 0 ]; then
stowit "${HOME}" "${app}"
fi
done
fi
;;
"unknown")
echo "Unknown OS."
;;
esac
# Setup useronly folders
for app in "${useronly[@]}"; do

View file

@ -10,8 +10,17 @@ format = """\
$directory\
$git_branch\
$git_status\
$container\
$git_metrics\
$docker_context\
$conda\
$golang\
$lua\
$rust\
$c\
$python\
$package\
$line_break\
$jobs\
$character\
"""
@ -21,17 +30,17 @@ right_format = """\
# Git branch configuration
[git_branch]
format = "[$branch(:$remote_branch)]($style)"
format = "[ $branch(:$remote_branch)]($style)"
style = "bold red"
# Git status configuration
[git_status]
format = '[$all_status]($style)'
format = '[ $all_status]($style)'
style = "bold green"
# Git metric configuration
[git_metrics]
format = '([$added]($added_style) )([$deleted]($deleted_style))'
format = '([ $added]($added_style))([ $deleted]($deleted_style))'
added_style = "green"
deleted_style = "red"
disabled = false
@ -43,61 +52,76 @@ error_symbol = "[ ✗](bold red)"
# Directory
[directory]
format = "[$path]($style)[$read_only]($read_only_style)"
style = "bright-cyan"
truncation_length = 3
truncation_symbol = "…/"
truncation_symbol = "~/…/"
[line_break]
disabled = true
[jobs]
symbol = '+ '
format = '[ $symbol$count]($style)'
number_threshold = 4
symbol_threshold = 0
[cmd_duration]
format = "[$duration]($style)"
style = "yellow"
# Package version
[package]
style = "purple"
# Container
[container]
format = '[$name]'
format = '[ $symbol \[$name\]]($style)'
style = "orange"
# Docker
[docker_context]
format = '[ $symbol$container]($style)'
style = "blue"
# C
[c]
format = "[ $symbol($version(-$name) )]($style)"
style = "bold 149"
detect_files = ["Makefile"]
# Conda
[conda]
format = "[$environment]"
format = "[ $environment]($style)"
style = "green"
# Python
[python]
pyenv_version_name = true
format = "[$version]($style)"
format = "[ ${symbol}(${version})(\\($virtualenv\\) )]($style)"
# pyenv_version_name = true
style = "blue"
detect_files = ["Pipfile", "pyproject.toml", "poetry.lock", "requirements.txt"]
# Golang
[golang]
format = "[$version]($style)"
format = "[ $symbol($version)($mod_version)]($style)"
style = "blue"
# Rust
[rust]
format = "[$version]($style)"
format = "[ $symbol$version]($style)"
style = "purple"
# Lua
[lua]
format = "[$version]($style)"
format = "[ $symbol$version]($style)"
style = "purple"
# Package
[package]
format = "[ $symbol$version]($style)"
style = "208 bold"
# Directory substitutions
[directory.substitutions]
"Documents/projects" = "proj"
".config" = "config"
".dotfiles" = "dot"
".local" = "local"
# Monokai Pro palette
[palettes.monokai_pro]

View file

@ -1,5 +1,7 @@
let g:netrw_dirhistmax =10
let g:netrw_dirhistcnt =9
let g:netrw_dirhistcnt =1
let g:netrw_dirhist_1='/Users/jfraeys/.local/bin/scripts'
let g:netrw_dirhist_0='/Users/jfraeys'
let g:netrw_dirhist_9='/Users/jfraeys/.dotfiles/nvim/.config/nvim/lua/custom/plugins'
let g:netrw_dirhist_8='/Users/jfraeys/.dotfiles/nvim/.config/nvim/lua/custom/snippets'
let g:netrw_dirhist_7='/Users/jfraeys/.dotfiles/nvim/.config/nvim/lua/custom'
@ -8,4 +10,3 @@ let g:netrw_dirhist_5='/Users/jfraeys/Documents/projects/job-req/resume-recomm/j
let g:netrw_dirhist_4='/Users/jfraeys/Documents/projects/job-req/resume-recomm'
let g:netrw_dirhist_3='/Users/jfraeys/Documents/projects/job-req/resume-recomm/job_req_resume_recomm'
let g:netrw_dirhist_2='/Users/jeremiefraeys/.ssh'
let g:netrw_dirhist_1='/Users/jeremiefraeys/.oh-my-zsh'

View file

@ -1,4 +1,6 @@
local wezterm = require("wezterm")
-- return table containing the meeting information
local M = {}
M.alert_popup_before_seconds = 15
@ -10,6 +12,9 @@ M.nerd_font_meeting = "󰤙"
M.ical_buddy = "/usr/local/bin/icalBuddy"
M.ignored_cal = "Birthdays, Family, Contacts, School, Home, Canadian Holidays, Canadiens, Jours fériés au Canada"
-- Execute a shell command and return the output
-- @param command: The shell command to execute
-- @return string: The output of the shell command
local function execute_command(command)
local f = io.popen(command)
if f == nil then
@ -20,15 +25,21 @@ local function execute_command(command)
return result
end
-- Check if iCalBuddy is installed
-- @return boolean: True if iCalBuddy is installed, false otherwise
local function check_ical_buddy()
local result = execute_command("test -f " .. M.ical_buddy)
if result == "" then
if result ~= "" then
return true
else
wezterm.log_error("Error: iCalBuddy is not installed")
return false
end
return true
end
-- Get the next meeting command
-- @param event_filter: The event filter to use with iCalBuddy
-- @return string: The iCalBuddy command to get the next meeting information
local function get_meeting_command(event_filter)
return string.format(
'%s --includeEventProps "title,datetime,attendees" --propertyOrder "title,datetime" --noCalendarNames --dateFormat "%%A" --includeOnlyEventsFromNowOn --limitItems 1 --excludeAllDayEvents --separateByDate --excludeCals "%s" %s',
@ -38,6 +49,8 @@ local function get_meeting_command(event_filter)
)
end
-- Get the next meeting from iCalBuddy
-- @return string: The next meeting information
local function get_next_meeting()
local command = get_meeting_command("eventsToday")
local next_meeting = execute_command(command)
@ -47,6 +60,9 @@ local function get_next_meeting()
return next_meeting
end
-- Parse the iCalBuddy output
-- @param ical_output: The output from iCalBuddy
-- @return table: A table containing the meeting information such as title, start time, end time, and attendees list
local function parse_result(ical_output)
local title, start_time, end_time, attendees
for line in ical_output:gmatch("[^\r\n]+") do
@ -58,17 +74,20 @@ local function parse_result(ical_output)
attendees = line:gsub("attendees: ", ""):gsub("^%s*(.-)%s*$", "%1")
end
end
title = ical_output:match("[^\r\n]+")
title = ical_output:match("[^\r\n]+") -- Assumes the first line is the title
return { title = title, start_time = start_time, end_time = end_time, attendees = attendees }
end
-- Calculate the time until the next meeting
-- @param start_time: The start time of the meeting in HH:MM format
-- @return table: A table containing the minutes until the meeting and the epoch difference
local function calculate_times(start_time)
if not start_time then
return nil
return { minutes_till_meeting = -1, epoch_diff = 0 }
end
local current_date = os.date("*t")
local epoc_meeting = os.time({
local epoch_meeting = os.time({
year = current_date.year,
month = current_date.month,
day = current_date.day,
@ -76,14 +95,24 @@ local function calculate_times(start_time)
min = tonumber(start_time:sub(4, 5)),
sec = 0,
})
local epoc_now = os.time()
local epoc_diff = epoc_meeting - epoc_now
local minutes_till_meeting = math.floor(epoc_diff / 60)
local epoch_now = os.time()
local epoch_diff = epoch_meeting - epoch_now
local minutes_till_meeting = math.floor(epoch_diff / 60)
return { minutes_till_meeting = minutes_till_meeting, epoc_diff = epoc_diff }
return { minutes_till_meeting = minutes_till_meeting, epoch_diff = epoch_diff }
end
local function display_popup(meeting)
-- Display a system notification with the meeting information
-- @param title: The title of the notification
-- @param message: The message of the notification
local function send_notification(title, message)
local command = string.format('notify-send "%s" "%s"', title, message)
os.execute(command)
end
-- Open a new tab with the meeting information
-- @param meeting: The meeting object containing the meeting information
local function open_meeting_tab(meeting)
local meeting_info = string.format(
"Title: %s\nStart Time: %s\nEnd Time: %s\nAttendees: %s",
meeting.title,
@ -91,61 +120,61 @@ local function display_popup(meeting)
meeting.end_time,
meeting.attendees
)
wezterm.gui.show_popup(meeting_info)
end
local function update_tab_bar(times, meeting)
local status = wezterm.format({
{ Background = { Color = M.theme_bg } },
{ Foreground = { Color = M.theme_red } },
{
Text = string.format(
" %s %s (%d minutes) ",
M.nerd_font_meeting,
meeting.title,
times.minutes_till_meeting
),
},
wezterm.mux.spawn_window({
title = "Next Meeting",
cwd = wezterm.home_dir,
command = { "echo", meeting_info }, -- Display meeting info in the new tab
})
if times.epoc_diff <= M.alert_popup_before_seconds then
display_popup(meeting)
end
return status
end
-- Check for the next meeting and display a notification if it is starting soon
-- @return number: 0 if successful, 1 if iCalBuddy is not installed, -1 if there is no upcoming meeting
function M.main()
print("here")
if not check_ical_buddy() then
return ""
return 1
end
local next_meeting = get_next_meeting()
if not next_meeting then
return ""
return -1
end
local meeting = parse_result(next_meeting)
local times = calculate_times(meeting.start_time)
if not times then
return ""
if times.minutes_till_meeting == -1 then
return 0
end
return update_tab_bar(times, meeting)
-- Display notification if meeting is starting soon
if times.epoch_diff <= M.alert_popup_before_seconds then
-- local meeting_message = string.format(
-- "Title: %s\nStart Time: %s\nEnd Time: %s\nAttendees: %s",
-- meeting.title,
-- meeting.start_time,
-- meeting.end_time,
-- meeting.attendees
-- )
-- send_notification("Upcoming Meeting", meeting_message)
open_meeting_tab(meeting)
end
return 0
end
-- Set up a timer to check for meetings periodically
-- @param interval_seconds: The interval in seconds to check for meetings periodically. Default is 60 seconds
function M.setup_update_timer(interval_seconds)
interval_seconds = interval_seconds or 60 -- Default interval is 60 seconds
local function update()
local meeting_status = M.main()
if meeting_status ~= "" then
wezterm.on("update-right-status", function(window)
window:set_right_status(wezterm.format({
{ Text = meeting_status },
}))
end)
local exit_code = M.main()
if exit_code == -1 then
wezterm.log_debug("No upcoming meeting found.")
elseif exit_code == 1 then
wezterm.log_error("Error: iCalBuddy is not installed")
elseif exit_code ~= 0 then
wezterm.log_error("Error checking for meetings")
end
end
@ -156,4 +185,43 @@ function M.setup_update_timer(interval_seconds)
wezterm.update_built_in_timer("meeting_notifier_update", interval_seconds, update)
end
-- Test the meeting notifier functions
-- This function is for testing purposes only
function M.test_meeting_notifier()
-- Test if iCalBuddy is installed
local icalbuddy_installed = check_ical_buddy()
wezterm.log_info("iCalBuddy Check: ", icalbuddy_installed)
-- Test getting the next meeting
local next_meeting = get_next_meeting()
wezterm.log_info("Next Meeting: ", next_meeting)
if next_meeting and next_meeting ~= "" then
-- Test parsing the meeting result
local meeting = parse_result(next_meeting)
wezterm.log_info("Parsed Meeting:")
wezterm.log_info("Title: ", meeting.title)
wezterm.log_info("Start Time: ", meeting.start_time)
wezterm.log_info("End Time: ", meeting.end_time)
wezterm.log_info("Attendees: ", meeting.attendees)
-- Test calculating times
local times = calculate_times(meeting.start_time)
wezterm.log_info("Time Until Meeting: ", times.minutes_till_meeting, " minutes (", times.epoch_diff, " seconds)")
-- Test notification function
local meeting_message = string.format(
"Title: %s\nStart Time: %s\nEnd Time: %s\nAttendees: %s",
meeting.title,
meeting.start_time,
meeting.end_time,
meeting.attendees
)
send_notification("Test Notification", meeting_message)
else
wezterm.log_info("No upcoming meeting found.")
end
end
return M

View file

@ -4,9 +4,9 @@ local act = wezterm.action
-- Pull custom modules
local theme = require("theme-switcher")
-- local meeting_notifier = require("meeting-notifier")
local meeting_notifier = require("meeting-notifier")
local profiler = require("profiler")
local history = require("history")
-- local history = require("history")
local config = {}
local keys = {}
@ -17,7 +17,7 @@ if wezterm.config_builer then
config = wezterm.config_builder()
end
config.debug_key_events = false
config.debug_key_events = true
if wezterm.target_triple == "x86_64-pc-windows-msvc" then
-- Windows-specific settings
@ -25,14 +25,14 @@ if wezterm.target_triple == "x86_64-pc-windows-msvc" then
elseif wezterm.target_triple == "x86_64-apple-darwin" then
-- macOS-specific settings
config.macos_window_background_blur = 10
config.default_prog = { "/bin/zsh" }
config.default_prog = { "/bin/zsh", "-l" }
config.font = wezterm.font_with_fallback({
{ family = "MesloLGS NF", scale = 0.9 },
{ family = "Symbols Nerd Font", scale = 0.9 },
})
elseif wezterm.target_triple == "x86_64-unknown-linux-gnu" then
-- Linux-specific settings
config.default_prog = { "/bin/bash" }
config.default_prog = { "/bin/bash", "-l" }
config.font = wezterm.font_with_fallback({
{ family = "MesloLGS NF", scale = 0.9 },
{ family = "Ubuntu Mono", scale = 0.9 },
@ -74,6 +74,7 @@ config.use_fancy_tab_bar = false
config.tab_max_width = 25
config.switch_to_last_active_tab_when_closing_tab = true
config.show_new_tab_button_in_tab_bar = false
config.window_close_confirmation = "NeverPrompt"
config.audible_bell = "Disabled"
@ -387,45 +388,46 @@ wezterm.on("gui-startup", function()
profiler.startup("WZ_PROJECT", "profiles")
end)
wezterm.on("window-config-reload", function()
-- Set up the meeting notifier to check every 60 seconds
-- meeting_notifier.setup_update_timer(15)
meeting_notifier.test_meeting_notifier()
end)
wezterm.on("mux-is-process-stateful", function(proc)
_ = proc
return nil
end)
wezterm.on("format-tab-title", function(tab)
local pane = tab.active_pane
local title = pane.title
-- wezterm.on("format-tab-title", function(tab)
-- local pane = tab.active_pane
-- local title = pane.title
--
-- if pane.domain_name ~= "local" then
-- title = title .. " - (" .. pane.current_working_dir .. ")"
-- end
--
-- return title
-- end)
if pane.domain_name ~= "local" then
title = title .. " - (" .. pane.current_working_dir .. ")"
end
return title
end)
-- Setup the update timer for meeting notification
-- meeting_notifier.setup_update_timer(5) -- Update every 60 seconds
wezterm.on("update-right-status", function(window)
local stat = window:active_workspace()
if window:active_key_table() then
stat = window:active_key_table()
end
if window:leader_is_active() then
stat = "L"
end
local date = wezterm.strftime("%a %b %-d %H:%M")
window:set_right_status(wezterm.format({
{ Text = stat },
{ Text = " | " },
{ Text = date },
}))
end)
config.default_prog = { "/usr/local/bin/zsh" }
-- wezterm.on("update-right-status", function(window)
-- local stat = window:active_workspace()
--
-- if window:active_key_table() then
-- stat = window:active_key_table()
-- end
-- if window:leader_is_active() then
-- stat = "L"
-- end
--
-- local date = wezterm.strftime("%a %b %-d %H:%M")
--
-- window:set_right_status(wezterm.format({
-- { Text = stat },
-- { Text = " | " },
-- { Text = date },
-- }))
-- end)
return config

13
zsh/.fzf.zsh Executable file
View file

@ -0,0 +1,13 @@
# Setup fzf
# ---------
if [[ ! "$PATH" == */usr/local/opt/fzf/bin* ]]; then
PATH="${PATH:+${PATH}:}/usr/local/opt/fzf/bin"
fi
# Auto-completion
# ---------------
[[ $- == *i* ]] && source "/usr/local/opt/fzf/shell/completion.zsh" 2> /dev/null
# Key bindings
# ------------
source "/usr/local/opt/fzf/shell/key-bindings.zsh"

View file

@ -1,93 +1,45 @@
if [[ -z "$XDG_CONFIG_HOME" ]]; then
export XDG_CONFIG_HOME="$HOME/.config"
fi
# Ensure XDG_CONFIG_HOME is set
: "${XDG_CONFIG_HOME:=$HOME/.config}"
# Set default pager
export PAGER="less -i -N -S -R"
# export ITERM_ENABLE_SHELL_INTEGRATION_WITH_TMUX=YES
if [[ -n $SSH_CONNECTION ]]; then
export EDITOR='vim'
else
export EDITOR='nvim'
# Ensure PYENV_ROOT is set and its bin directory is in PATH
if [[ -n "$PYENV_ROOT" && ! "$PATH" =~ (^|:)${PYENV_ROOT}/bin(:|$) ]]; then
export PATH="$PYENV_ROOT/bin:$PATH"
fi
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
# set PATH so it includes user's private ~/.local/bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
PATH="$HOME/.local/bin:$PATH"
# Add ~/.local/bin to PATH if it exists
if [[ -d "$HOME/.local/bin" && ! "$PATH" =~ (^|:)${HOME}/.local/bin(:|$) ]]; then
export PATH="$HOME/.local/bin:$PATH"
fi
# Set permissions for ~/.local/bin
chmod -R ug+rwx "$HOME/.local/bin/"
if [ -f fzf_theme ]; then
source fzf_theme > /dev/null 2>&1
# Read fzf theme options if the file exists
if [[ -f "$HOME/.local/bin/scripts/fzf_theme" ]]; then
FZF_OPTIONS=$("$HOME/.local/bin/scripts/fzf_theme")
export FZF_DEFAULT_OPTS="$FZF_OPTIONS"
fi
# Source fzf configuration
source <(fzf --zsh)
# Add RVM to PATH for scripting. Make sure this is the last PATH variable change.
export PATH="$PATH:$HOME/.rvm/bin"
# Add RVM to PATH
if [[ ! "$PATH" =~ (^|:)${HOME}/.rvm/bin(:|$) ]]; then
export PATH="$PATH:$HOME/.rvm/bin"
fi
# Add Golang to PATH
export GOPATH="$HOME/Documents/projects:$HOME/go"
export PATH="$PATH:$(go env GOPATH)/bin"
if [[ -n "$(go env GOPATH)" && ! "$PATH" =~ (^|:)$(go env GOPATH)/bin(:|$) ]]; then
export GOPATH="$HOME/Documents/projects:$HOME/go"
export PATH="$PATH:$(go env GOPATH)/bin"
fi
# # Function to activate Python virtual environment if found
activate_python_env() {
local env_dir
# env_dir=$(find . -type f -name activate -exec dirname {} \;)
env_dir=$(fd -H -I -t f -d 3 'activate$' | xargs dirname)
if [ -n "$env_dir" ]; then
source "$env_dir/activate"
else
echo "No Python virtual environment found in the current directory or its subdirectories."
fi
}
alias act='activate_python_env'
alias python="python3"
alias v="nvim"
# alias docker="$HOME/.local/bin/docker_check.sh"
# alias tn="tmux new -s $(pwd | sed 's/.*\///g')"
alias cat="bat --paging=never"
alias grep="grep --color=auto"
# Basic `ls` replacement with `eza`, grouping directories first
alias ls='eza --group-directories-first --color=auto'
# List all files, including hidden ones, in long format with grouped directories
alias la='eza -la --group-directories-first --color=auto'
# List files in long format with grouped directories
alias ll='eza -l --group-directories-first --color=auto'
# List files sorted by modification time, newest first, in long format with grouped directories
alias lt='eza -lt modified --sort newest'
# List files sorted by size, largest first, in long format with grouped directories
alias lS='eza -lS --group-directories-first --color=auto'
# Display directory tree with a depth limit of 3 levels
alias tree='eza --tree --level=3'
# Display git status alongside files
alias lg='eza --git'
# Add eza completions to FPATH
export FPATH="/usr/local/bin/eza/completions/zsh:$FPATH"
# set bat to highlight --help messages
alias bathelp='bat --plain --language=help'
help() {
"$@" --help 2>&1 | bathelp
}
# overwriting -h and --help with bat highlights
alias -g :h='-h 2>&1 | bat --language=help --style=plain'
alias -g :help='--help 2>&1 | bat --language=help --style=plain'
# Initialize zoxide
eval "$(zoxide init --cmd cd zsh)"
# Cargo setup
if [[ -d "$HOME/.cargo/bin" && ! "$PATH" =~ (^|:)${HOME}/.cargo/bin(:|$) ]]; then
export PATH="$HOME/.cargo/bin:$PATH"
fi

View file

@ -1,32 +1,95 @@
# Load p10k instant prompt if it exists
# if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
# source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
# fi
# zmodload zsh/zprof
DISABLE_UPDATE_PROMPT=true
# Function to clean up and normalize paths
path_print_clean() {
local var=${1:-PATH}
local arr
local newarr=()
local path
local p
# Add custom paths to $PATH
export PATH="$HOME/.local/bin:$PATH"
# Read PATH into an array
IFS=: arr=(${(s.:.)${(P)var}})
# Homebrew Configuration
# Add Homebrew's installation directory to the PATH
if [[ -d /opt/homebrew ]]; then
export PATH="/opt/homebrew/bin:/opt/homebrew/sbin:$PATH"
elif [[ -d /usr/local ]]; then
export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
fi
# Declare an associative array to keep track of seen paths
typeset -A seen
# Path to your oh-my-zsh installation.
for p in "${arr[@]}"; do
# Empty element is equivalent to CWD (weird, I know), remove it
if [[ -z $p ]]; then
continue
fi
# Remove any relative paths
if [[ ${p:0:1} != '/' ]]; then
continue
fi
# Normalize path and ensure we can access it
path=$(cd "$p" &>/dev/null && pwd)
# Path doesn't exist or we can't access it
if [[ -z $path ]]; then
continue
fi
# Filter out dups while we are here
if [[ -n ${seen[$path]} ]]; then
continue
fi
seen[$path]=true
# Store the new path
newarr+=("$path")
done
local IFS=:
echo "${newarr[*]}"
}
# Function to clean up the PATH variable
path_clean() {
local path
path=$(path_print_clean) || return 1
# Use eval to correctly assign the cleaned path to the PATH variable
export PATH="$path"
}
timezsh() {
shell=${1-$SHELL}
for i in $(seq 1 10); do /usr/bin/time $shell -i -c exit; done
}
# Path to your oh-my-zsh installation
export ZSH="$HOME/.oh-my-zsh"
export ZSH_CUSTOM="$HOME/.oh-my-zsh/custom"
export UPDATE_ZSH_DAYS=1
export FZF_DEFAULT_OPTS="$(fzf_theme)"
# Set name of the theme to loading
# ZSH_THEME="powerlevel10k/powerlevel10k"
# ZSH_THEME="robbyrussell"
# Set list of themes to pick from when loading at random
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
# Add macOS specific command-line utilities
if [[ -d /usr/local/opt/coreutils/libexec/gnubin && ! "$PATH" =~ (^|:)/usr/local/opt/coreutils/libexec/gnubin(:|$) ]]; then
export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
fi
# Ensure /opt/homebrew is in the PATH if it exists
if [[ -d /opt/homebrew && ! "$PATH" =~ (^|:)/opt/homebrew/(bin|sbin)($|:) ]]; then
export PATH="/opt/homebrew/bin:/opt/homebrew/sbin:$PATH"
fi
# Add /usr/local/bin and /usr/local/sbin to PATH if they are not already present
dirs=("/usr/local/bin" "/usr/local/sbin")
for dir in "${dirs[@]}"; do
if [[ -d $dir && ! "$PATH" =~ (^|:)$dir(:|$) ]]; then
export PATH="$dir:$PATH"
fi
done
# Clean up paths again to ensure no duplicates
path_clean PATH
# Auto-update and other zsh settings
DISABLE_UPDATE_PROMPT=true
zstyle ':omz:update' mode reminder # remind to update
# Uncomment to use case-sensitive completion
# CASE_SENSITIVE="true"
@ -34,52 +97,19 @@ export FZF_DEFAULT_OPTS="$(fzf_theme)"
# Uncomment to use hyphen-insensitive completion
# HYPHEN_INSENSITIVE="true"
# Uncomment one of the following lines to change the auto-update behavior
# zstyle ':omz:update' mode disabled # disable automatic updates
# zstyle ':omz:update' mode auto # update automatically without asking
# zstyle ':omz:update' mode reminder # just remind me to update when it's time
# Uncomment to change how often to auto-update (in days)
# zstyle ':omz:update' frequency 13
# Uncomment if pasting URLs and other text is messed up
# Miscellaneous configurations
# DISABLE_MAGIC_FUNCTIONS="true"
# Uncomment to disable colors in ls
# DISABLE_LS_COLORS="true"
# Uncomment to disable auto-setting terminal title
# DISABLE_AUTO_TITLE="true"
# Uncomment to enable command auto-correction
# ENABLE_CORRECTION="true"
# Uncomment to display red dots whilst waiting for completion
# COMPLETION_WAITING_DOTS="true"
# Uncomment to disable marking untracked files under VCS as dirty
# DISABLE_UNTRACKED_FILES_DIRTY="true"
# Load zsh hooks
autoload -Uz add-zsh-hook
# move_curor_to_bottom() {
# [[ -n ${PIN_PROMPT_NEWLINE+1} ]] && echo
# tput cup $LINES
# }
# move_curor_to_bottom
# add-zsh-hook preexec move_curor_to_bottom
# Uncomment to change the command execution time stamp shown in history command output
# HIST_STAMPS="mm/dd/yyyy"
HISTFILE=~/.zsh_history
HISTSIZE=1000
SAVEHIST=10000
# Set custom folder for oh-my-zsh, if desired
ZSH_CUSTOM=$HOME/.oh-my-zsh/custom
# Load completion scripts
autoload -Uz compinit && compinit -C
# Plugins to load
plugins=(
@ -92,7 +122,6 @@ plugins=(
zoxide
eza
)
export ZSH_AUTOSUGGEST_STRATEGY=(
history
completion
@ -101,31 +130,9 @@ export ZSH_AUTOSUGGEST_STRATEGY=(
# Source oh-my-zsh.sh
source $ZSH/oh-my-zsh.sh
# User configuration
source ~/.zprofile
# export MANPATH="/usr/local/man:$MANPATH"
# Set preferred editor for local and remote sessions
# if [[ -n $SSH_CONNECTION ]]; then
# export EDITOR='vim'
# else
# export EDITOR='nvim'
# fi
# Compilation flags
# export ARCHFLAGS="-arch x86_64"
# Set personal aliases
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"
# alias firefox="/Applications/Firefox.app/Contents/MacOS/firefox-bin -P profileName"
# Customize prompt, if .p10k.zsh exists
# [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
# Finalize p10k configuration if p10k function exists
# (( ! ${+functions[p10k]} )) || p10k finalize
# Initialize Starship
eval "$(starship init zsh)"
export STARSHIP_CONFIG="${XDG_CONFIG_HOME:-$HOME/.config}/starship.toml"
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
@ -142,13 +149,45 @@ fi
unset __conda_setup
# <<< conda initialize <<<
# Load completion scripts
autoload -Uz compinit && compinit
# Set default editor
if [[ -n $SSH_CONNECTION ]]; then
export EDITOR='vi'
else
export EDITOR='nvim'
fi
# # Customize prompt, if .p10k.zsh in .dotfiles exists
# [[ ! -f ~/.dotfiles/p10k/.p10k.zsh ]] || source ~/.dotfiles/p10k/.p10k.zsh
# Compilation flags
# export ARCHFLAGS="-arch x86_64"
# Initialize Starship
eval "$(starship init zsh)"
export STARSHIP_CONFIG=~/.config/starship.toml
# Custom aliases
alias python="python3"
alias v="nvim"
alias cat="bat --paging=never"
alias grep="grep --color=auto"
alias ls='eza --group-directories-first --color=auto'
alias la='eza -la --group-directories-first --color=auto'
alias ll='eza -l --group-directories-first --color=auto'
alias lt='eza -lt modified --sort newest'
alias lS='eza -lS --group-directories-first --color=auto'
alias tree='eza --tree --level=3'
alias lg='eza --git'
alias bathelp='bat --plain --language=help'
help() {
"$@" --help 2>&1 | bathelp
}
# Overwriting -h and --help with bat highlights
alias -g :h='-h 2>&1 | bat --language=help --style=plain'
alias -g :help='--help 2>&1 | bat --language=help --style=plain'
# Add eza completions to FPATH
[[ ! "$FPATH" =~ (^|:)${HOME}/.local/bin/eza/completions/zsh(:|$) ]] && export FPATH="$HOME/.local/bin/eza/completions/zsh:$FPATH"
#Initialize direnv
eval "$(direnv hook zsh)"
# Initialize zoxide
eval "$(zoxide init --cmd cd zsh)"
path_clean