diff options
| author | WriterV2 <primary-v2@protonmail.com> | 2026-04-03 22:46:48 +0200 |
|---|---|---|
| committer | WriterV2 <primary-v2@protonmail.com> | 2026-04-03 22:46:48 +0200 |
| commit | a1ec4771740d321df4480e8a7224fa10b59f0569 (patch) | |
| tree | 5e97e8ced79b4fea057fab6e76f80849c053e401 | |
Update repo with git init directly in home dir
35 files changed, 3420 insertions, 0 deletions
diff --git a/.config/alacritty/alacritty.toml b/.config/alacritty/alacritty.toml new file mode 100644 index 0000000..49ceca0 --- /dev/null +++ b/.config/alacritty/alacritty.toml @@ -0,0 +1,55 @@ +[colors] +draw_bold_text_with_bright_colors = false + +[colors.primary] +background = "#222433" +foreground = "#929be5" + +[cursor] +thickness = 0.1 + +[cursor.style] +shape = "Beam" + +[font] +size = 11.0 + +[font.bold] +family = "Hack Nerd Font" +style = "Bold" + +[font.bold_italic] +family = "Hack Nerd Font" +style = "Bold Italic" + +[font.italic] +family = "Hack Nerd Font" +style = "Italic" + +[font.normal] +family = "Hack Nerd Font" +style = "Regular" + +[colors.normal] +black = "#282b39" +blue = "#589ec6" +cyan = "#59b6b6" +green = "#7cbe8c" +magenta = "#b871b8" +red = "#dc6f7a" +white = "#fdfdfd" +yellow = "#a8a384" + +[scrolling] +history = 1000 +multiplier = 5 + +[window] +dynamic_padding = true + +[window.padding] +x = 15 +y = 8 + +[terminal.shell] +program = "/bin/nu" diff --git a/.config/clipcat/clipcat-menu.toml b/.config/clipcat/clipcat-menu.toml new file mode 100644 index 0000000..49405ef --- /dev/null +++ b/.config/clipcat/clipcat-menu.toml @@ -0,0 +1,14 @@ +server_endpoint = "/run/user/1000/clipcat/grpc.sock" +finder = "rofi" + +[rofi] +line_length = 100 +menu_length = 30 +menu_prompt = "Clipcat" +extra_arguments = [] + +[log] +emit_journald = true +emit_stdout = false +emit_stderr = false +level = "INFO" diff --git a/.config/gtk-3.0/settings.ini b/.config/gtk-3.0/settings.ini new file mode 100644 index 0000000..14b41be --- /dev/null +++ b/.config/gtk-3.0/settings.ini @@ -0,0 +1,5 @@ +[Settings] +gtk-icon-theme-name = Adwaita +gtk-theme-name = Adwaita +gtk-font-name = Hack Nerd Font 11 +gtk-application-prefer-dark-theme = true diff --git a/.config/herbstluftwm/autostart b/.config/herbstluftwm/autostart new file mode 100755 index 0000000..7bc7a02 --- /dev/null +++ b/.config/herbstluftwm/autostart @@ -0,0 +1,112 @@ +#!/usr/bin/env bash + +# this is a simple config for herbstluftwm + +hc() { + herbstclient "$@" +} + +hc emit_hook reload + +# set background color / wallpaper +xsetroot -solid '#000000' +feh --bg-scale /mnt/files/Pictures/background.png + +# remove all existing keybindings +hc keyunbind --all + +# keybindings +Mod=Mod1 # Alt as Mod key +Super=Mod4 # Super as Super key + +# reload window manager +hc keybind $Mod-Shift-r reload +# close focused client +hc keybind $Mod-F4 close +# open terminal (alacritty) +hc keybind $Mod-Control-t spawn alacritty + +# moving clients in tiling and floating mode +hc keybind $Mod-Shift-Left shift left +hc keybind $Mod-Shift-Down shift down +hc keybind $Mod-Shift-Up shift up +hc keybind $Mod-Shift-Right shift right +hc keybind $Mod-Shift-h shift left +hc keybind $Mod-Shift-j shift down +hc keybind $Mod-Shift-k shift up +hc keybind $Mod-Shift-l shift right + +# tags +tag_names=( {1..9} ) +tag_keys=( {1..9} 0 ) + +hc rename default "${tag_names[0]}" || true +for i in "${!tag_names[@]}" ; do + hc add "${tag_names[$i]}" + key="${tag_keys[$i]}" + if ! [ -z "$key" ] ; then + # switch to tag i + hc keybind "$Super-$key" use_index "$i" + # move focused client to tag i + hc keybind "$Super-Shift-$key" move_index "$i" + fi +done + +# cycle through tags +hc keybind $Super-Tab use_index +1 --skip-visible +hc keybind $Super-Shift-Tab use_index -1 --skip-visible + +# fullscreen +hc keybind $Mod-f fullscreen toggle + +# layout +set default_frame_layout grid + +# cycle through layouts +hc keybind $Super-l \ + or , and . compare tags.focus.curframe_wcount = 2 \ + . cycle_layout +1 vertical horizontal max vertical grid \ + , cycle_layout +1 + +# mouse +hc mouseunbind --all + +# cycle through clients +hc keybind $Mod-Tab cycle +hc keybind $Mod-Shift-Tab cycle -1 + +# theme +hc attr theme.tiling.reset 1 +hc attr theme.floating.reset 1 +hc attr theme.title_height 0 +hc attr theme.active.color '#929be5' +hc attr theme.normal.color '#222432' +hc attr theme.urgent.color '#490404' +hc attr theme.inner_width 0 +hc attr theme.border_width 1 +hc attr theme.background_color '#141414' + +hc set window_gap 10 +hc set frame_padding 0 +hc set smart_window_surroundings off +hc set smart_frame_surroundings on +hc set mouse_recenter_gap 0 +hc set frame_bg_transparent true + +# rules +hc unrule -F +hc rule focus=on # normally focus new clients +hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' floating=on +hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on +hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK|DESKTOP)' manage=off +hc rule title="Origin" tag=9 focus=off +hc rule title="Wine System Tray" tag=9 focus=off + +# unlock, just to be sure +hc unlock + +# launch polybar +~/.config/polybar/launch.sh + +xcompmgr -cfnS +fcitx5 -d & diff --git a/.config/nushell/config.nu b/.config/nushell/config.nu new file mode 100644 index 0000000..99f311b --- /dev/null +++ b/.config/nushell/config.nu @@ -0,0 +1,889 @@ +let completer = {|spans| + fish --command $'complete "--do-complete=($spans | str join " ")"' + | from tsv --flexible --noheaders --no-infer + | rename value description +} + +let dark_theme = { + separator: white + leading_trailing_space_bg: { attr: n } + header: green_bold + empty: blue + + + + bool: light_cyan + int: white + filesize: cyan + duration: white + date: purple + range: white + float: white + string: white + nothing: white + binary: white + cell-path: white + row_index: green_bold + record: white + list: white + block: white + hints: dark_gray + search_result: { bg: red fg: white } + shape_and: purple_bold + shape_binary: purple_bold + shape_block: blue_bold + shape_bool: light_cyan + shape_closure: green_bold + shape_custom: green + shape_datetime: cyan_bold + shape_directory: cyan + shape_external: cyan + shape_externalarg: green_bold + shape_external_resolved: light_yellow_bold + shape_filepath: cyan + shape_flag: blue_bold + shape_float: purple_bold + + shape_garbage: { fg: white bg: red attr: b} + shape_globpattern: cyan_bold + shape_int: purple_bold + shape_internalcall: cyan_bold + shape_keyword: cyan_bold + shape_list: cyan_bold + shape_literal: blue + shape_match_pattern: green + shape_matching_brackets: { attr: u } + shape_nothing: light_cyan + shape_operator: yellow + shape_or: purple_bold + shape_pipe: purple_bold + shape_range: yellow_bold + shape_record: cyan_bold + shape_redirection: purple_bold + shape_signature: green_bold + shape_string: green + shape_string_interpolation: cyan_bold + shape_table: blue_bold + shape_variable: purple + shape_vardecl: purple +} + +let light_theme = { + + separator: dark_gray + leading_trailing_space_bg: { attr: n } + header: green_bold + empty: blue + + + + bool: dark_cyan + int: dark_gray + filesize: cyan_bold + duration: dark_gray + date: purple + range: dark_gray + float: dark_gray + string: dark_gray + nothing: dark_gray + binary: dark_gray + cell-path: dark_gray + row_index: green_bold + record: dark_gray + list: dark_gray + block: dark_gray + hints: dark_gray + search_result: { fg: white bg: red } + shape_and: purple_bold + shape_binary: purple_bold + shape_block: blue_bold + shape_bool: light_cyan + shape_closure: green_bold + shape_custom: green + shape_datetime: cyan_bold + shape_directory: cyan + shape_external: cyan + shape_externalarg: green_bold + shape_external_resolved: light_purple_bold + shape_filepath: cyan + shape_flag: blue_bold + shape_float: purple_bold + + shape_garbage: { fg: white bg: red attr: b} + shape_globpattern: cyan_bold + shape_int: purple_bold + shape_internalcall: cyan_bold + shape_keyword: cyan_bold + shape_list: cyan_bold + shape_literal: blue + shape_match_pattern: green + shape_matching_brackets: { attr: u } + shape_nothing: light_cyan + shape_operator: yellow + shape_or: purple_bold + shape_pipe: purple_bold + shape_range: yellow_bold + shape_record: cyan_bold + shape_redirection: purple_bold + shape_signature: green_bold + shape_string: green + shape_string_interpolation: cyan_bold + shape_table: blue_bold + shape_variable: purple + shape_vardecl: purple +} + + + + + + + +$env.config = { + show_banner: false + + ls: { + use_ls_colors: true + clickable_links: true + } + + rm: { + always_trash: false + } + + table: { + mode: rounded + index_mode: always + show_empty: true + padding: { left: 1, right: 1 } + trim: { + methodology: wrapping + wrapping_try_keep_words: true + truncating_suffix: "..." + } + header_on_separator: false + + } + + error_style: "fancy" + + + + + datetime_format: { + + + } + + explore: { + status_bar_background: { fg: "#1D1F21", bg: "#C4C9C6" }, + command_bar_text: { fg: "#C4C9C6" }, + highlight: { fg: "black", bg: "yellow" }, + status: { + error: { fg: "white", bg: "red" }, + warn: {} + info: {} + }, + table: { + split_line: { fg: "#404040" }, + selected_cell: { bg: light_blue }, + selected_row: {}, + selected_column: {}, + }, + } + + history: { + max_size: 100_000 + sync_on_enter: true + file_format: "plaintext" + isolation: false + } + + completions: { + case_sensitive: false + quick: true + partial: true + algorithm: "prefix" + external: { + enable: true + max_results: 100 + completer: $completer + } + use_ls_colors: true + } + + filesize: { + unit: "metric" + } + + cursor_shape: { + emacs: line + vi_insert: block + vi_normal: underscore + } + + color_config: $dark_theme + footer_mode: "auto" + float_precision: 2 + buffer_editor: "" + use_ansi_coloring: true + bracketed_paste: true + edit_mode: emacs + shell_integration: { + + osc2: true + + osc7: true + + osc8: true + + osc9_9: false + + + + + + + osc133: true + + + + + + + + + osc633: true + + reset_application_mode: true + } + render_right_prompt_on_last_line: false + use_kitty_protocol: false + highlight_resolved_externals: false + recursion_limit: 50 + + plugins: {} + + plugin_gc: { + + default: { + enabled: true + stop_after: 10sec + } + plugins: { + + # + + + + } + } + + hooks: { + pre_prompt: [{ null }] + pre_execution: [{ null }] + env_change: { + PWD: [{|before, after| null }] + } + display_output: "if (term size).columns >= 100 { table -e } else { table }" + command_not_found: { null } + } + + menus: [ + { + name: completion_menu + only_buffer_difference: false + marker: "| " + type: { + layout: columnar + columns: 4 + col_width: 20 + col_padding: 2 + } + style: { + text: green + selected_text: { attr: r } + description_text: yellow + match_text: { attr: u } + selected_match_text: { attr: ur } + } + } + { + name: ide_completion_menu + only_buffer_difference: false + marker: "| " + type: { + layout: ide + min_completion_width: 0, + max_completion_width: 50, + max_completion_height: 10, + padding: 0, + border: true, + cursor_offset: 0, + description_mode: "prefer_right" + min_description_width: 0 + max_description_width: 50 + max_description_height: 10 + description_offset: 1 + correct_cursor_pos: false + } + style: { + text: green + selected_text: { attr: r } + description_text: yellow + match_text: { attr: u } + selected_match_text: { attr: ur } + } + } + { + name: history_menu + only_buffer_difference: true + marker: "? " + type: { + layout: list + page_size: 10 + } + style: { + text: green + selected_text: green_reverse + description_text: yellow + } + } + { + name: help_menu + only_buffer_difference: true + marker: "? " + type: { + layout: description + columns: 4 + col_width: 20 + col_padding: 2 + selection_rows: 4 + description_rows: 10 + } + style: { + text: green + selected_text: green_reverse + description_text: yellow + } + } + ] + + keybindings: [ + { + name: completion_menu + modifier: none + keycode: tab + mode: [emacs vi_normal vi_insert] + event: { + until: [ + { send: menu name: completion_menu } + { send: menunext } + { edit: complete } + ] + } + } + { + name: ide_completion_menu + modifier: control + keycode: char_n + mode: [emacs vi_normal vi_insert] + event: { + until: [ + { send: menu name: ide_completion_menu } + { send: menunext } + { edit: complete } + ] + } + } + { + name: history_menu + modifier: control + keycode: char_r + mode: [emacs, vi_insert, vi_normal] + event: { send: menu name: history_menu } + } + { + name: help_menu + modifier: none + keycode: f1 + mode: [emacs, vi_insert, vi_normal] + event: { send: menu name: help_menu } + } + { + name: completion_previous_menu + modifier: shift + keycode: backtab + mode: [emacs, vi_normal, vi_insert] + event: { send: menuprevious } + } + { + name: next_page_menu + modifier: control + keycode: char_x + mode: emacs + event: { send: menupagenext } + } + { + name: undo_or_previous_page_menu + modifier: control + keycode: char_z + mode: emacs + event: { + until: [ + { send: menupageprevious } + { edit: undo } + ] + } + } + { + name: escape + modifier: none + keycode: escape + mode: [emacs, vi_normal, vi_insert] + event: { send: esc } + } + { + name: cancel_command + modifier: control + keycode: char_c + mode: [emacs, vi_normal, vi_insert] + event: { send: ctrlc } + } + { + name: quit_shell + modifier: control + keycode: char_d + mode: [emacs, vi_normal, vi_insert] + event: { send: ctrld } + } + { + name: clear_screen + modifier: control + keycode: char_l + mode: [emacs, vi_normal, vi_insert] + event: { send: clearscreen } + } + { + name: search_history + modifier: control + keycode: char_q + mode: [emacs, vi_normal, vi_insert] + event: { send: searchhistory } + } + { + name: open_command_editor + modifier: control + keycode: char_o + mode: [emacs, vi_normal, vi_insert] + event: { send: openeditor } + } + { + name: move_up + modifier: none + keycode: up + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: menuup } + { send: up } + ] + } + } + { + name: move_down + modifier: none + keycode: down + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: menudown } + { send: down } + ] + } + } + { + name: move_left + modifier: none + keycode: left + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: menuleft } + { send: left } + ] + } + } + { + name: move_right_or_take_history_hint + modifier: none + keycode: right + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: historyhintcomplete } + { send: menuright } + { send: right } + ] + } + } + { + name: move_one_word_left + modifier: control + keycode: left + mode: [emacs, vi_normal, vi_insert] + event: { edit: movewordleft } + } + { + name: move_one_word_right_or_take_history_hint + modifier: control + keycode: right + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: historyhintwordcomplete } + { edit: movewordright } + ] + } + } + { + name: move_to_line_start + modifier: none + keycode: home + mode: [emacs, vi_normal, vi_insert] + event: { edit: movetolinestart } + } + { + name: move_to_line_start + modifier: control + keycode: char_a + mode: [emacs, vi_normal, vi_insert] + event: { edit: movetolinestart } + } + { + name: move_to_line_end_or_take_history_hint + modifier: none + keycode: end + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: historyhintcomplete } + { edit: movetolineend } + ] + } + } + { + name: move_to_line_end_or_take_history_hint + modifier: control + keycode: char_e + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: historyhintcomplete } + { edit: movetolineend } + ] + } + } + { + name: move_to_line_start + modifier: control + keycode: home + mode: [emacs, vi_normal, vi_insert] + event: { edit: movetolinestart } + } + { + name: move_to_line_end + modifier: control + keycode: end + mode: [emacs, vi_normal, vi_insert] + event: { edit: movetolineend } + } + { + name: move_up + modifier: control + keycode: char_p + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: menuup } + { send: up } + ] + } + } + { + name: move_down + modifier: control + keycode: char_t + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: menudown } + { send: down } + ] + } + } + { + name: delete_one_character_backward + modifier: none + keycode: backspace + mode: [emacs, vi_insert] + event: { edit: backspace } + } + { + name: delete_one_word_backward + modifier: control + keycode: backspace + mode: [emacs, vi_insert] + event: { edit: backspaceword } + } + { + name: delete_one_character_forward + modifier: none + keycode: delete + mode: [emacs, vi_insert] + event: { edit: delete } + } + { + name: delete_one_character_forward + modifier: control + keycode: delete + mode: [emacs, vi_insert] + event: { edit: delete } + } + { + name: delete_one_character_backward + modifier: control + keycode: char_h + mode: [emacs, vi_insert] + event: { edit: backspace } + } + { + name: delete_one_word_backward + modifier: control + keycode: char_w + mode: [emacs, vi_insert] + event: { edit: backspaceword } + } + { + name: move_left + modifier: none + keycode: backspace + mode: vi_normal + event: { edit: moveleft } + } + { + name: newline_or_run_command + modifier: none + keycode: enter + mode: emacs + event: { send: enter } + } + { + name: move_left + modifier: control + keycode: char_b + mode: emacs + event: { + until: [ + { send: menuleft } + { send: left } + ] + } + } + { + name: move_right_or_take_history_hint + modifier: control + keycode: char_f + mode: emacs + event: { + until: [ + { send: historyhintcomplete } + { send: menuright } + { send: right } + ] + } + } + { + name: redo_change + modifier: control + keycode: char_g + mode: emacs + event: { edit: redo } + } + { + name: undo_change + modifier: control + keycode: char_z + mode: emacs + event: { edit: undo } + } + { + name: paste_before + modifier: control + keycode: char_y + mode: emacs + event: { edit: pastecutbufferbefore } + } + { + name: cut_word_left + modifier: control + keycode: char_w + mode: emacs + event: { edit: cutwordleft } + } + { + name: cut_line_to_end + modifier: control + keycode: char_k + mode: emacs + event: { edit: cuttoend } + } + { + name: cut_line_from_start + modifier: control + keycode: char_u + mode: emacs + event: { edit: cutfromstart } + } + { + name: swap_graphemes + modifier: control + keycode: char_t + mode: emacs + event: { edit: swapgraphemes } + } + { + name: move_one_word_left + modifier: alt + keycode: left + mode: emacs + event: { edit: movewordleft } + } + { + name: move_one_word_right_or_take_history_hint + modifier: alt + keycode: right + mode: emacs + event: { + until: [ + { send: historyhintwordcomplete } + { edit: movewordright } + ] + } + } + { + name: move_one_word_left + modifier: alt + keycode: char_b + mode: emacs + event: { edit: movewordleft } + } + { + name: move_one_word_right_or_take_history_hint + modifier: alt + keycode: char_f + mode: emacs + event: { + until: [ + { send: historyhintwordcomplete } + { edit: movewordright } + ] + } + } + { + name: delete_one_word_forward + modifier: alt + keycode: delete + mode: emacs + event: { edit: deleteword } + } + { + name: delete_one_word_backward + modifier: alt + keycode: backspace + mode: emacs + event: { edit: backspaceword } + } + { + name: delete_one_word_backward + modifier: alt + keycode: char_m + mode: emacs + event: { edit: backspaceword } + } + { + name: cut_word_to_right + modifier: alt + keycode: char_d + mode: emacs + event: { edit: cutwordright } + } + { + name: upper_case_word + modifier: alt + keycode: char_u + mode: emacs + event: { edit: uppercaseword } + } + { + name: lower_case_word + modifier: alt + keycode: char_l + mode: emacs + event: { edit: lowercaseword } + } + { + name: capitalize_char + modifier: alt + keycode: char_c + mode: emacs + event: { edit: capitalizechar } + } + + { + name: copy_selection_system + modifier: control_shift + keycode: char_c + mode: emacs + event: { edit: copyselection } + } + { + name: cut_selection_system + modifier: control_shift + keycode: char_x + mode: emacs + event: { edit: cutselection } + } + { + name: select_all + modifier: control_shift + keycode: char_a + mode: emacs + event: { edit: selectall } + } + ] +} + +alias _rg = rg +export def --wrapped rg [...rest] { + mut result = '' + if ($in != null) { + $result = (print $in | _rg ...$rest) + } else { + $result = (_rg ...$rest) + } + $result | lines | parse "{File}:{Result}" | update Result { |row| ($row.Result | str replace --all $rest.0 $'(ansi gb)($rest.0)(ansi reset)') } | sort-by File +} + + +use ~/.cache/starship/init.nu +use documents.nu +use remarkable.nu +use notes.nu +use dv.nu +use onepiece.nu +use youtube.nu +use phone.nu +use screen.nu +use wishlist.nu +use reading-order.nu diff --git a/.config/nushell/documents.nu b/.config/nushell/documents.nu new file mode 100644 index 0000000..3293d70 --- /dev/null +++ b/.config/nushell/documents.nu @@ -0,0 +1,4 @@ +export def scan [] { + sudo scanimage --format=pdf --output-file $"/mnt/files/Documents/Scans/(date now | format date "%FT%T").pdf" --progress +} + diff --git a/.config/nushell/dv.nu b/.config/nushell/dv.nu new file mode 100644 index 0000000..e5e382a --- /dev/null +++ b/.config/nushell/dv.nu @@ -0,0 +1,25 @@ +export def record [name: string] { + let location: path = $env.MISCPATH | path join / rawdv $name + mkdir $location + cd $location + dvgrab -a +} + +export def collect-to-mp4 [dvdirectory: string, name: string] { + let location: path = $env.MISCPATH | path join / rawdv $dvdirectory + let output_location: path = $env.MISCPATH | path join output + cd $location + let file_list = "tmp_file_list.txt" + ls **/*.dv + | get name + | each { |path| $"file '($path)'"} + | save $file_list + ffmpeg -f concat -safe 0 -i $file_list -c:v libx264 -crf 23 -preset medium $"($name).mp4" + mv $"($name).mp4" $output_location + rm $file_list +} + +export def record-and-save [name: string] { + record $name + collect-to-mp4 $name $name +} diff --git a/.config/nushell/notes.nu b/.config/nushell/notes.nu new file mode 100644 index 0000000..c591063 --- /dev/null +++ b/.config/nushell/notes.nu @@ -0,0 +1,41 @@ +def open-db-in-memory [] { + if ($env.NOTES_DB_PATH | path exists) { + stor import --file-name (get-db-path) + } else { + stor reset + stor create -t "note" -c {created: datetime, text: str} + stor export --file-name (get-db-path) + } +} + +def save-db-to-file [] { + rm $env.NOTES_DB_PATH + stor export --file-name $env.NOTES_DB_PATH +} + +export def add [text: string] { + open-db-in-memory + stor insert -t note -d { created: (date now), text: ($text) } + save-db-to-file +} + +export def browse [--before: datetime, --after: datetime] { + open-db-in-memory + let before_filter = if ($before != null) { + $before + } else { + date now + } + + let after_filter = if ($after != null) { + $after + } else { + "0001-01-01" | into datetime + } + + let notes = open $env.NOTES_DB_PATH | get note | where {|row| + ($row.created | into datetime) < $before_filter and ($row.created | into datetime) > $after_filter + } + + $notes +} diff --git a/.config/nushell/phone.nu b/.config/nushell/phone.nu new file mode 100644 index 0000000..ef62a80 --- /dev/null +++ b/.config/nushell/phone.nu @@ -0,0 +1,6 @@ +export def camera-as-webcam [ + direction: string # 'front' or 'back' +] { + scrcpy --v4l2-sink=/dev/video0 -m1024 --video-source=camera --no-audio --camera-facing ($direction) +} + diff --git a/.config/nushell/reading-order.nu b/.config/nushell/reading-order.nu new file mode 100644 index 0000000..d02d351 --- /dev/null +++ b/.config/nushell/reading-order.nu @@ -0,0 +1,142 @@ +export def "books add" [ + name: string, # name of the book + author: string, # name of the book's author + --finished # mark the book already read - default: false +] { + let book_id = random uuid + { + id: $book_id, + name: $name, + author: $author + finished: ($finished | default false) + } | into sqlite $env.READINGORDER_DB_PATH -t books + + print $"Added ($name) successfully to list of books." + books show --id $book_id +} + +export def "books show" [ + --id: string, # id of the book, identify using `reading-order books show --explore` + --explore # show in nushell explorer +] { + if not ($env.READINGORDER_DB_PATH | path exists) { + print "List of books is empty. If it shouldn't be empty, check the READINGORDER_DB_PATH environment variable." + return + } + mut books = open $env.READINGORDER_DB_PATH | get books + + if $id != null { + $books = $books | where id == $id + } + + if ($explore) { + return ($books | explore -p) + } + + return $books +} + +export def "books set-name" [ + id: string, # id of the book, identify using `reading-order books show --explore` + name: string +] { + if not ($env.READINGORDER_DB_PATH | path exists) { + print "List of books is empty. If it shouldn't be empty, check the READINGORDER_DB_PATH environment variable." + return + } + open $env.READINGORDER_DB_PATH | query db "UPDATE books SET name = ? WHERE id = ?" -p [$name, $id] + print $"Updated name for book with id ($id) successfully." + books show --id $id +} + +export def "books set-author-name" [ + id: string, # id of the book, identify using `reading-order books show --explore` + author: string +] { + if not ($env.READINGORDER_DB_PATH | path exists) { + print "List of books is empty. If it shouldn't be empty, check the READINGORDER_DB_PATH environment variable." + return + } + open $env.READINGORDER_DB_PATH | query db "UPDATE books SET author = ? WHERE id = ?" -p [$author, $id] + print $"Updated author name for book with id ($id) successfully." + books show --id $id +} + +export def "books set-finished" [ + id: string, # id of the book, identify using `reading-order books show --explore` + finished: bool = true, +] { + if not ($env.READINGORDER_DB_PATH | path exists) { + print "List of books is empty. If it shouldn't be empty, check the READINGORDER_DB_PATH environment variable." + return + } + open $env.READINGORDER_DB_PATH | query db "UPDATE books SET finished = ? WHERE id = ?" -p [$finished, $id] + print $"Updated finished status for book with id ($id) successfully." + books show --id $id +} + +# Add a reading order +export def add [ + book1_id: string, # id of the book to be read before book 2, identify using `reading-order books show --explore` + book2_id: string, # id of the book to be read after book 1, identify using `reading-order books show --explore` +] { + let reading_order_id = random uuid + { + id: $reading_order_id, + book1: $book1_id, + book2: $book2_id, + } | into sqlite $env.READINGORDER_DB_PATH + + print $"Added reading order successfully." + show --id $reading_order_id +} + +export def show [ + --id: string, # id of the book, identify using `reading-order books show --explore` + --explore # show in nushell explorer +] { + if not ($env.READINGORDER_DB_PATH | path exists) { + print "List of books is empty. If it shouldn't be empty, check the READINGORDER_DB_PATH environment variable." + return + } + + mut reading_orders = open $env.READINGORDER_DB_PATH | get main + + if $id != null { + return ($reading_orders | where id == $id) + } + + if ($explore) { + return ($reading_orders | explore -p) + } + + return $reading_orders +} + +export def read-next [] { + if not ($env.READINGORDER_DB_PATH | path exists) { + print "List of books is empty. If it shouldn't be empty, check the READINGORDER_DB_PATH environment variable." + return + } + + let reading_orders = open $env.READINGORDER_DB_PATH | get main + mut books = open $env.READINGORDER_DB_PATH | get books | where { |book| + if $book.finished == 1 { + return false + } + + + for order in $reading_orders { + if $order.book2 != $book.id { + continue + } + let book_to_read_before = books show --id $order.book1 + if $book_to_read_before.finished != 1 { + return false + } + } + return true + + } + return $books +} diff --git a/.config/nushell/remarkable.nu b/.config/nushell/remarkable.nu new file mode 100644 index 0000000..8a5522c --- /dev/null +++ b/.config/nushell/remarkable.nu @@ -0,0 +1,18 @@ +export def upload [file: path] { + let filename = ($file | path parse | get stem) + let extension = ($file | path parse | get extension) + curl $"http://($env.REMARKABLE_IP)/upload" -H "Origin: http://192.168.178.24" -H "Referer: http://192.168.178.24" -H 'Connection: keep-alive' -F $"file=@($file);filename=($filename);type=application/($extension)" +} + +export def download [collection_id?: string] { + curl $"http://($env.REMARKABLE_IP)/documents/($collection_id)" + | from json + | select VissibleName ID Type + | input list + | if $in.Type == 'DocumentType' { + let name = $in.VissibleName; + curl $"http://($env.REMARKABLE_IP)/download/($in.ID)/pdf" | save -f $"($name | str snake-case).pdf" + } else { + download $in.ID + } +} diff --git a/.config/nushell/screen.nu b/.config/nushell/screen.nu new file mode 100644 index 0000000..88c72f5 --- /dev/null +++ b/.config/nushell/screen.nu @@ -0,0 +1,17 @@ +export def shot [] { + maim -s $"($env.SCREENS_PATH)/(date now | format date %s)-screen.png" +} + +export def shoot [--duration: int, --delay: int] { + mut args = [] + + if $duration != null { + $args = $args | append "-t" | append $duration + } + if $delay != null { + $args = $args | append $"-ss" | append $delay + } + + + ffmpeg -video_size 1900x1080 -framerate 25 -f x11grab -i :0.0+0,0 -f alsa -ac 2 -i pulse -acodec aac -vf setpts=N/FR/TB ...$args $"($env.RECORDINGS_PATH)(date now | format date %s)-recording.mp4" +} diff --git a/.config/nushell/wishlist.nu b/.config/nushell/wishlist.nu new file mode 100644 index 0000000..10cc0f5 --- /dev/null +++ b/.config/nushell/wishlist.nu @@ -0,0 +1,183 @@ +export def add [ + name: string, # name of the item + --comment: string, # comment for the item + --sources: list<string>, # a source to acquire the item, typically a URL + --importance: int # a number to indicate the importance, choose the scaling yourself, default: 0 +] { + let item_id = random uuid + { + id: $item_id, + name: $name, + comment: ($comment | default ''), + acquired: false, + importance: ($importance | default 0) + } | into sqlite $env.WISHLIST_DB_PATH + + print $"Added ($name) successfully to the wishlist." + + if $sources != null and ($sources | length) > 0 { + $sources | each { |source| + let link_id = random uuid + { + id: (random uuid), + item_id: $item_id, + content: $source + } | into sqlite $env.WISHLIST_DB_PATH -t sources + } + print $"Added sources for ($name) successfully." + } + show --id $item_id +} + +export def show [ + --id: string, # id of the item, identify using `wishlist show --explore` + --explore # show in nushell explorer +] { + if not ($env.WISHLIST_DB_PATH | path exists) { + print "Wishlist is empty. If it shouldn't be empty, check the WISHLIST_DB_PATH environment variable." + return + } + mut wishlist = open $env.WISHLIST_DB_PATH | get main + + if $id != null { + $wishlist = $wishlist | where id == $id + } + + if ($explore) { + return ($wishlist | explore -p) + } + + return $wishlist +} + +export def set-comment [ + id: string, # id of the item, identify using `wishlist show --explore` + comment: string +] { + if not ($env.WISHLIST_DB_PATH | path exists) { + print "Wishlist database was not found. If this shouldn't happen, check the WISHLIST_DB_PATH environment variable." + return + } + + open $env.WISHLIST_DB_PATH | query db "UPDATE main SET comment = ? WHERE id = ?" -p [$comment, $id] + print $"Updated comment for item with id ($id) successfully." + show --id $id +} + +export def set-importance [ + id: string, # id of the item, identify using `wishlist show --explore` + importance: int +] { + if not ($env.WISHLIST_DB_PATH | path exists) { + print "Wishlist database was not found. If this shouldn't happen, check the WISHLIST_DB_PATH environment variable." + return + } + + open $env.WISHLIST_DB_PATH | query db "UPDATE main SET importance = ? WHERE id = ?" -p [$importance, $id] + print $"Updated importance for item with id ($id) successfully." + show --id $id +} + +export def check [ + id: string, # id of the item, identify using `wishlist show --explore` +] { + if not ($env.WISHLIST_DB_PATH | path exists) { + print "Wishlist database was not found. If this shouldn't happen, check the WISHLIST_DB_PATH environment variable." + return + } + + open $env.WISHLIST_DB_PATH | query db "UPDATE main SET acquired = true WHERE id = ?" -p [$id] + print $"Checked off item with id ($id) successfully." + show --id $id + +} + +export def remove [ + id: string, # id of the item, identify using `wishlist show --explore` +] { + if not ($env.WISHLIST_DB_PATH | path exists) { + print "Wishlist database was not found. If this shouldn't happen, check the WISHLIST_DB_PATH environment variable." + return + } + + open $env.WISHLIST_DB_PATH | query db "DELETE FROM main WHERE id = ?" -p [$id] + print $"Removed item with id ($id) successfully." + show +} + +# Get the highest value of importance in the wishlist +export def highest-importance [] { + show | get importance | reduce { |it, acc| if ($it > $acc) { $it } else { $acc }} +} + +# Get the lowest value of importance in the wishlist +export def lowest-importance [] { + show | get importance | reduce { |it, acc| if ($it < $acc) { $it } else { $acc }} +} + +export def "sources show" [ + --id: string, # id of the source, identify using `wishlist sources show --explore` + --item-id: string, # id of the item, identify using `wishlist show --explore` + --explore # show in nushell explorer +] { + if not ($env.WISHLIST_DB_PATH | path exists) { + print "Wishlist database was not found. If this shouldn't happen, check the WISHLIST_DB_PATH environment variable." + return + } + + mut sources = open $env.WISHLIST_DB_PATH | get sources + + if $id != null { + $sources = $sources | where id == $id + } else if $item_id != null { + $sources = $sources | where item_id == $item_id + } + + if ($explore) { + return ($sources | explore -p) + } + + return $sources +} + +export def "sources add" [ + content: string # content of the source to acquire the item, typically a URL + item_id: string, # id of the item, identify using `wishlist show --explore` +] { + let source_id = random uuid + { + id: $source_id, + item_id: $item_id, + content: $content, + } | into sqlite $env.WISHLIST_DB_PATH -t sources + print $"Added new source to item with id ($item_id) successfully." + sources show --id $source_id +} + +export def "sources update" [ + id: string # id of the source, identify using `wishlist sources show --explore` + content: string # new content for the given source +] { + if not ($env.WISHLIST_DB_PATH | path exists) { + print "Wishlist database was not found. If this shouldn't happen, check the WISHLIST_DB_PATH environment variable." + return + } + + open $env.WISHLIST_DB_PATH | query db "UPDATE sources SET content = ? WHERE id = ?" -p [$content, $id] + print $"Updated source with id ($id) successfully." + sources show --id $id +} + +export def "sources remove" [ + id: string, # id of the source, identify using `wishlist sources show --explore` +] { + if not ($env.WISHLIST_DB_PATH | path exists) { + print "Wishlist database was not found. If this shouldn't happen, check the WISHLIST_DB_PATH environment variable." + return + } + + open $env.WISHLIST_DB_PATH | query db "DELETE FROM sources WHERE id = ?" -p [$id] + print $"Removed source with id ($id) successfully." + sources show +} + diff --git a/.config/nushell/youtube.nu b/.config/nushell/youtube.nu new file mode 100644 index 0000000..c34b21b --- /dev/null +++ b/.config/nushell/youtube.nu @@ -0,0 +1,7 @@ +export def download [video_url: string] { + yt-dlp --cookies-from-browser firefox --downloader aria2c --downloader-args '-c -j 3 -x 3 -s 3 -k 1M' --sponsorblock-mark default --sponsorblock-remove sponsor --restrict-filenames -P $"($env.MISCPATH)/Youtube/" --output '%(channel)s_%(channel_id)s/%(playlist|Misc)s/%(upload_date)s.%(id)s.%(title)s.%(ext)s' $video_url +} + +export def stream [video_url: string] { + yt-dlp --cookies-from-browser firefox --downloader aria2c --downloader-args '-c -j 3 -x 3 -s 3 -k 1M' --sponsorblock-mark default --sponsorblock-remove sponsor $video_url -o - | ffplay - +} diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua new file mode 100644 index 0000000..64f9138 --- /dev/null +++ b/.config/nvim/init.lua @@ -0,0 +1,5 @@ +require("plugins"); +require("settings"); +require("lsp_config"); +require("treesitter_config"); +require("writing_config"); diff --git a/.config/nvim/lua/.luarc.json b/.config/nvim/lua/.luarc.json new file mode 100644 index 0000000..23b9ee2 --- /dev/null +++ b/.config/nvim/lua/.luarc.json @@ -0,0 +1,3 @@ +{ + "workspace.checkThirdParty": false +}
\ No newline at end of file diff --git a/.config/nvim/lua/lsp_config.lua b/.config/nvim/lua/lsp_config.lua new file mode 100644 index 0000000..20eecd1 --- /dev/null +++ b/.config/nvim/lua/lsp_config.lua @@ -0,0 +1,264 @@ +-- show diagnostic messages in quickfix list with <M-q> +vim.diagnostic.config({ + virtual_text = false, + signs = true, + float = { border = 'single' }, +}) +vim.keymap.set("n", "<M-q>", function() + -- toggle quickfix list + local windows = vim.fn.getwininfo() + local qf_opened = false + for i = 1, #windows, 1 do + local window = windows[i] + if window.quickfix == 1 then + qf_opened = true + break + end + end + if qf_opened then + vim.api.nvim_command("cclose") + else + vim.diagnostic.setqflist() + end +end) + +-- setup and config nvim-cmp completion +local cmp = require("cmp") +cmp.register_source("nvim_lsp_signature_help", require("cmp_nvim_lsp_signature_help").new()) + +cmp.setup({ + -- set vim-vsnip as snippet engine for nvim-cmp completion + snippet = { + expand = function(args) + vim.fn["vsnip#anonymous"](args.body) + end, + }, + mapping = cmp.mapping.preset.insert { + ['<CR>'] = cmp.mapping.confirm({ select = true }), + ['<C-Down>'] = cmp.mapping.scroll_docs(4), + ['<C-Up>'] = cmp.mapping.scroll_docs(-4), + }, + -- complete based on LSP, Snippets and Buffer + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'vsnip' }, + }, { + { name = 'buffer' }, + }) +}) + +-- Jump forward or backward to snippet placeholders in insert mode +vim.api.nvim_set_keymap("i", "<C-l>", "<Plug>(vsnip-jump-next)", { noremap = false }) +vim.api.nvim_set_keymap("s", "<C-l>", "<Plug>(vsnip-jump-next)", { noremap = false }) +vim.api.nvim_set_keymap("i", "<C-h>", "<Plug>(vsnip-jump-prev)", { noremap = false }) +vim.api.nvim_set_keymap("s", "<C-h>", "<Plug>(vsnip-jump-prev)", { noremap = false }) + + +-- complete text in search based on buffer +cmp.setup.cmdline('/', { + mapping = cmp.mapping.preset.cmdline(), + sources = { + { name = 'buffer' } + } +}) + +-- compete path in commandline +cmp.setup.cmdline(':', { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = 'path' } + }, { + { name = 'cmdline' } + }), +}) + +-- add additional completion capabilities +local capabilities = require('cmp_nvim_lsp').default_capabilities() + + +-- attaches settings after language server attaches to current buffer +local on_attach = function(client, bufnr) + local bufopts = { noremap = true, silent = true, buffer = bufnr } + vim.keymap.set("n", "gd", vim.lsp.buf.definition, bufopts) + vim.keymap.set("n", "gr", vim.lsp.buf.references, bufopts) + vim.keymap.set("n", "gi", vim.lsp.buf.implementation, bufopts) + vim.keymap.set("n", "K", vim.lsp.buf.hover, bufopts) + vim.api.nvim_create_autocmd("BufWritePre", { + pattern = "*", + callback = function() + vim.lsp.buf.format { + async = false + } + end, + }) +end + +for _, method in ipairs({ 'textDocument/diagnostic', 'workspace/diagnostic' }) do + local default_diagnostic_handler = vim.lsp.handlers[method] + vim.lsp.handlers[method] = function(err, result, context, config) + if err ~= nil and err.code == -32802 then + return + end + return default_diagnostic_handler(err, result, context, config) + end +end + +-- Language Servers + +-- Rust +vim.lsp.config('rust_analyzer', { + capabilities = capabilities, + on_attach = on_attach, + settings = { + ["rust-analyzer"] = { + checkOnSave = { + command = "clippy" + }, + assist = { + importGranularity = "module", + importPrefix = "by_self", + }, + cargo = { + loadOutDirsFromCheck = true + }, + procMacro = { + enable = true + }, + }, + }, +}) +vim.lsp.enable('rust_analyzer') + +-- Bash +vim.lsp.config('bashls', { + capabilities = capabilities, + on_attach = on_attach, +}) +vim.lsp.enable('bashls') + +-- Python +vim.lsp.config('jedi_language_server', { + capabilities = capabilities, + on_attach = on_attach, +}) +vim.lsp.enable('jedi_language_server') + +-- HTML +vim.lsp.config('html', { + capabilities = capabilities, + on_attach = on_attach, +}) +vim.lsp.enable('html') + +-- CSS +vim.lsp.config('cssls', { + capabilities = capabilities, + on_attach = on_attach, +}) +vim.lsp.enable('cssl') + +-- Tex +vim.lsp.config('texlab', { + capabilities = capabilities, + on_attach = on_attach, +}) +vim.lsp.enable('texlab') + +-- Svelte +vim.lsp.config('svelte', { + capabilities = capabilities, + on_attach = on_attach, +}) +vim.lsp.enable('svelte') + +-- Typescript & Javascript +vim.lsp.config('ts_ls', { + capabilities = capabilities, + on_attach = on_attach, + filetypes = { "typescript", "javascript" }, +}) +vim.lsp.enable('ts_ls') + +-- JSON +vim.lsp.config('jsonls', { + capabilities = capabilities, + on_attach = on_attach, +}) +vim.lsp.enable('jsonls') + +-- Lua +vim.lsp.config('lua_ls', { + capabilities = capabilities, + on_attach = on_attach, + settings = { + Lua = { + diagnostics = { + globals = { "vim", "on_attach" } + }, + workspace = { + library = vim.api.nvim_get_runtime_file("", true), + } + } + } +}) +vim.lsp.enable('lua_ls') + +-- Java +vim.lsp.config('jdtls', { + capabilities = capabilities, + on_attach = on_attach, +}) +vim.lsp.enable('jdtls') + +-- C lang +vim.lsp.config('clangd', { + capabilities = capabilities, + on_attach = on_attach, +}) +vim.lsp.enable('clangd') + +-- Nushell +vim.lsp.config('nushell', { + capabilities = capabilities, + on_attach = on_attach, +}) +vim.lsp.enable('nushell') + +-- Go +vim.lsp.config('gopls', { + capabilities = capabilities, + on_attach = on_attach, +}) +vim.lsp.enable('gopls') + +-- Tailwind +vim.lsp.config('tailwindcss', { + capabilities = capabilities, + on_attach = on_attach, + init_options = { + userLanguages = { + rust = "html", + } + }, + filetypes = { + "html", + "svelte", + "rust" + } +}) +vim.lsp.enable('tailwindcss') + +-- Elixir +vim.lsp.config('expert', { + capabilities = capabilities, + on_attach = on_attach, + --cmd = { 'bash', '/home/thev2/expert/apps/expert/_build/prod/rel/plain/bin/start_expert', '--stdio' }, + cmd = { 'expert', '--stdio' }, + root_markers = { 'mix.exs', '.git' }, + filetypes = { 'elixir', 'eelixir', 'heex' }, +}) +vim.lsp.enable('expert') + + +-- show nvim-lsp progress +require "fidget".setup {} diff --git a/.config/nvim/lua/plugins.lua b/.config/nvim/lua/plugins.lua new file mode 100644 index 0000000..c255508 --- /dev/null +++ b/.config/nvim/lua/plugins.lua @@ -0,0 +1,17 @@ +require "paq" { + "savq/paq-nvim", + "wadackel/vim-dogrun", + "neovim/nvim-lspconfig", + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + "hrsh7th/cmp-path", + "hrsh7th/cmp-cmdline", + "hrsh7th/nvim-cmp", + "hrsh7th/cmp-vsnip", + "hrsh7th/vim-vsnip", + "rafamadriz/friendly-snippets", + "hrsh7th/cmp-nvim-lsp-signature-help", + "nvim-treesitter/nvim-treesitter", + "j-hui/fidget.nvim", + --"LhKipp/nvim-nu", +} diff --git a/.config/nvim/lua/settings.lua b/.config/nvim/lua/settings.lua new file mode 100644 index 0000000..8548605 --- /dev/null +++ b/.config/nvim/lua/settings.lua @@ -0,0 +1,14 @@ +vim.cmd("colorscheme dogrun") +vim.opt.encoding = "utf-8" +vim.opt.relativenumber = true +vim.opt.laststatus = 2 +vim.opt.autoindent = true +vim.opt.shiftwidth = 4 +vim.opt.softtabstop = 4 +vim.opt.expandtab = true +vim.opt.linebreak = true +vim.opt.termguicolors = true +vim.opt.completeopt = { "menuone", "noinsert", "noselect" } +vim.opt.statusline = "%= %f %= " +vim.opt.cursorline = true +vim.cmd("highlight clear CursorLine") diff --git a/.config/nvim/lua/treesitter_config.lua b/.config/nvim/lua/treesitter_config.lua new file mode 100644 index 0000000..e934d71 --- /dev/null +++ b/.config/nvim/lua/treesitter_config.lua @@ -0,0 +1,49 @@ +require("nvim-treesitter.configs").setup { + ensure_installed = { + "rust", + "bash", + "c", + "comment", + "cpp", + "css", + "dockerfile", + "fish", + "gdscript", + "gitignore", + "glsl", + "go", + "haskell", + "help", + "html", + "http", + "java", + "javascript", + "json", + "kotlin", + "latex", + "llvm", + "lua", + "make", + "markdown", + "pascal", + "python", + "regex", + "scss", + "sql", + "svelte", + "toml", + "typescript", + "vim", + "vue", + "yaml", + }, + sync_install = true, + auto_install = true, + highlight = { + enable = true, + }, + ignore_install = { + "nu" + }, + modules = {}, +} diff --git a/.config/nvim/lua/writing_config.lua b/.config/nvim/lua/writing_config.lua new file mode 100644 index 0000000..6380868 --- /dev/null +++ b/.config/nvim/lua/writing_config.lua @@ -0,0 +1,18 @@ +vim.api.nvim_create_autocmd("BufWritePost", { + pattern = "*.tex", + callback = function() + -- compile tex file to pdf with pdflatex on save + if vim.fn.executable('pdflatex') == 1 then + vim.cmd("execute '!pdflatex ' . expand('%:p')") + else + print("pdflatex is not installed") + end + + -- compile tex file to html with pandoc on save + if vim.fn.executable('pandoc') == 1 then + vim.cmd("execute '!pandoc -o ' . substitute(expand('%:p'), '.tex', '.html ', '') . expand('%:p')") + else + print("pandoc is not installed") + end + end, +}) diff --git a/.config/polybar/config.ini b/.config/polybar/config.ini new file mode 100644 index 0000000..3f5b47f --- /dev/null +++ b/.config/polybar/config.ini @@ -0,0 +1,73 @@ +[colors] +background = #222432 +foreground = #929be5 +foreground-alt = #a29d80 +alert = #db6e79 + +[bar/bar1] +monitor = ${env:MONITOR} +width = 100% +height = 24 +fixed-center = true +background = ${colors.background} +foreground = ${colors.foreground} +line-size = 1 +line-color = ${colors.foreground-alt} +border-size = 0 +padding-left = 3 +padding-right = 3 +module-margin-left = 1 +module-margin-right = 2 +font-0 = Hack Nerd Font:style=Regular:pixelsize=10;1 +modules-left = wlan alsa +modules-center = ewmh +modules-right = date time + +[module/wlan] +type = internal/network +interface-type = wired +interval = 1.0 +format-connected = <ramp-signal> <label-connected> +label-connected = [connected] +format-disconnected = <label-disconnected> +label-disconnected = 睊 [disconnected] +label-disconnected-foreground = ${colors.alert} +ramp-signal-0 = 直 +ramp-signal-foreground = ${colors.foreground-alt} +unknown-as-up = true + +[module/date] +type = internal/date +interval = 30.0 +format-prefix = | +format-prefix-foreground = ${colors.foreground-alt} +label = %date% +date = %d.%m.%Y% + +[module/time] +type = internal/date +interval = 30.0 +format-prefix = | +format-prefix-foreground = ${colors.foreground-alt} +format = <label> +label = %time% +time = %H:%M + +[module/alsa] +type = internal/alsa +format-volume =<ramp-volume> <label-volume> +label-volume = %percentage%% +label-volume-foreground = ${colors.foreground} +label-muted = +format-muted-foreground = ${colors.alert} +ramp-volume-0 = +ramp-volume-foreground = ${colors.foreground-alt} + +[module/ewmh] +type = internal/xworkspaces +pin-xworkspaces = true +label-active-foreground = ${colors.foreground-alt} +label-occupied-foreground = ${colors.alert} + +[settings] +screenchange-reload = true diff --git a/.config/rofi/config.rasi b/.config/rofi/config.rasi new file mode 100644 index 0000000..f2f7acc --- /dev/null +++ b/.config/rofi/config.rasi @@ -0,0 +1,9 @@ +configuration { +modi: "drun"; +prompt: "find"; +font: "Hack 12"; +terminal: "alacritty"; + icon-theme: "Advaita"; + show-icons: true; +} +@theme "~/.config/rofi/theme.rasi" diff --git a/.config/rofi/theme.rasi b/.config/rofi/theme.rasi new file mode 100644 index 0000000..c7e79fd --- /dev/null +++ b/.config/rofi/theme.rasi @@ -0,0 +1,53 @@ +/** + * Rofi Color Theme - dmenu + Dogrun + **/ + +* { + background-color: #222432; + border-color: #919ae4; + font: "Hack 10"; + text-color: #919ae4; +} + +window { + width: 100.0000% ; + padding: 3px ; + anchor: north; + location: north; + children: [ horibox ]; +} + +horibox { + orientation: horizontal; + children: [ prompt,entry,listview ]; +} + +listview { + layout: horizontal; + spacing: 100px ; + lines: 100; +} + +entry { + width: 10.0000em ; + expand: false; +} + +element { + padding: 0px 2px ; +} + +element selected { + background-color: @text-color; + text-color: @background-color; +} + +element-text { + background-color: inherit; + text-color: inherit; +} + +element-icon { + background-color: inherit; + text-color: inherit; +} diff --git a/.config/starship.toml b/.config/starship.toml new file mode 100644 index 0000000..d720e96 --- /dev/null +++ b/.config/starship.toml @@ -0,0 +1,74 @@ +# Insert blank line between shell prompts +add_newline = true + +# prompt format +format = """$python $username$hostname$directory$git_branch$git_status${custom.writing}${custom.dev} +$character""" + +[username] +style_user = "fg:#929be5 bg:#282b39" +style_root = "fg:#b871b8 bg:#282b39" +format = "[$user]($style) " +disabled = false +show_always = true + +[directory] +format = "[$path]($style) [$read_only]($read_only_style)" +read_only = "" +read_only_style = "#dc6f7a" +style = "fg:#a8a384 bg:#282b39" +truncation_length = 3 +truncation_symbol = ".../" +truncate_to_repo = false +disabled = false +home_symbol = "" + +[character] +format = "$symbol " +success_symbol = "[»](#7cbe8c)" +error_symbol = "[»](#dc6f7a)" +disabled = false + +[custom.dev] +format = "[$symbol]($style)" +when = "pwd | rg -i 'Dev'" +symbol = " " +style = "#59b6b6" + +[custom.writing] +format = "[$symbol]($style)" +when = "pwd | rg -i 'Writing'" +symbol = " " +style = "#59b6b6" + + +[git_branch] +always_show_remote = false +format = "[$symbol$branch]($style) " +symbol = ":" +style = "#b871b8" +only_attached = false +disabled = false + +[git_status] +conflicted = "»«" +ahead = "⇡" +behind = "⇣" +diverged = "⇕" +stashed = '\$' +modified = "!" +staged = "+" +renamed = "易" +deleted = "x" +style = "#dc6f7a" +disabled = false + +[hostname] +ssh_only = true +format = "[$hostname]($style)" +style = "fg:#929be5 bg:#282b39" +disabled = false + +[python] +format = "[$virtualenv]($style)" +style = "#59b6b6" @@ -0,0 +1,2 @@ +#!/bin/sh +feh --no-fehbg --bg-scale '/mnt/files/Pictures/background.png' diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2ba566e --- /dev/null +++ b/.gitignore @@ -0,0 +1,43 @@ +* +!.gitignore +!.xprofile +!.xbindkeysrc +!.fehbg +!.vsnip/ +!.vsnip/* +!.newsboat +!.newsboat/urls +!.newsboat/config +!.mozilla +!.mozilla/firefox +!.mozilla/firefox/default +!.mozilla/firefox/default/chrome +!.mozilla/firefox/default/chrome/userChrome.css +!.config +!.config/alacritty +!.config/alacritty/alacritty.toml +!.config/clipcat +!.config/clipcat/clipcat-menu.toml +!.config/gtk-3.0 +!.config/gtk-3.0/settings.ini +!.config/herbstluftwm +!.config/herbstluftwm/autostart +!.config/nushell +!.config/nushell/config.nu +!.config/nushell/documents.nu +!.config/nushell/dv.nu +!.config/nushell/notes.nu +!.config/nushell/phone.nu +!.config/nushell/reading-order.nu +!.config/nushell/remarkable.nu +!.config/nushell/screen.nu +!.config/nushell/wishlist.nu +!.config/nushell/youtube.nu +!.config/nvim +!.config/nvim/** +!.config/polybar +!.config/polybar/config.ini +!.config/rofi +!.config/rofi/** +!.config/starship.toml + diff --git a/.mozilla/firefox/default/chrome/userChrome.css b/.mozilla/firefox/default/chrome/userChrome.css new file mode 100644 index 0000000..860b1b0 --- /dev/null +++ b/.mozilla/firefox/default/chrome/userChrome.css @@ -0,0 +1,35 @@ +html { + --toolbar-bgcolor: #222433 !important; + --toolbar-field-color: #929be5 !important; + --toolbar-field-focus-color: #929be5 !important; + --toolbar-field-focus-background-color: #222433 !important; + --focus-outline-color: #282b39 !important; + --toolbar-color: #929be5 !important; + --toolbarbutton-icon-fill: #a09b7f !important; + --arrowpanel-color: #929be5 !important; + --arrowpanel-background: #222433 !important; + --lwt-selected-tab-background-color: #222433 !important; + --lwt-brighttext-url-color: #a09b7f !important; + --lwt-tab-text: #929be5 !important; + --lwt-text-color: #929be5 !important; + --autocomplete-popup-highlight-color: #a09b7f !important; + color: #929be5 !important; + --tab-selected-textcolor: inherited !important; + --tab-selected-bgcolor: inherited !important; +} + +#back-button, +#forward-button, +#unified-extensions-button, +#alltabs-button, +#firefox-view-button, +#new-tab-button, +#downloads-button, +#PanelUI-menu-button, +#identity-icon { + display: none !important; +} + +#urlbar-container { + margin-left: 1em !important; +} diff --git a/.newsboat/config b/.newsboat/config new file mode 100644 index 0000000..52d7af9 --- /dev/null +++ b/.newsboat/config @@ -0,0 +1,3 @@ +include /usr/share/doc/newsboat/contrib/colorschemes/plain +auto-reload yes +browser firefox diff --git a/.newsboat/urls b/.newsboat/urls new file mode 100644 index 0000000..d859145 --- /dev/null +++ b/.newsboat/urls @@ -0,0 +1,46 @@ +"query:General News:(tags # \"news\") and (age < 3)" +http://rss.dw.com/xml/rss-de-news news ! + +"query:Space:(tags # \"space\") and (age < 3)" +https://www.nasa.gov/news-release/feed space ! +http://www.esa.int/rssfeed/Our_Activities/Space_News space ! + +"query:Arch Linux:(tags # \"arch\") and (age < 90)" +https://archlinux.org/feeds/news/ arch ! + +"query:Sustainable Development:(tags # \"sd\")" +https://sustainablewebdesign.org/strategies/rss sd ! +https://www.mightybytes.com/rss sd ! +https://www.wholegraindigital.com/rss sd ! + +"query:Neovim:(tags # \"nvim\")" +https://github.com/neovim/neovim/tags.atom nvim ! + +"query:Rust:(tags # \"rust\") and (age < 30)" +https://blog.rust-lang.org/feed.xml rust ! +https://blog.rust-lang.org/inside-rust/feed.xml rust ! +https://tokio.rs/_next/static/feed.xml rust ! +https://this-week-in-rust.org/rss.xml rust ! +https://bevyengine.org/atom.xml rust ! +https://thisweekinbevy.com/feed.xml rust ! + +"query:Software Development Misc:(tags # \"sdmisc\") and (age < 30)" +https://cprss.s3.amazonaws.com/golangweekly.com.xml sdmisc ! +https://blog.jetbrains.com/kotlin/feed/ sdmisc ! +https://elixir-lang.org/atom.xml sdmisc ! +https://cprss.s3.amazonaws.com/postgresweekly.com.xml sdmisc ! +https://sqlitebrowser.org/blog/index.xml sdmisc ! + +"query:Web Development Misc:(tags # \"wdmisc\") and (age < 30)" +https://devblogs.microsoft.com/typescript/feed/ wdmisc ! +https://cprss.s3.amazonaws.com/javascriptweekly.com.xml wdmisc ! +https://feedpress.me/cssweekly wdmisc ! +https://tailwindweekly.com/rss/ wdmisc ! +https://servo.org/blog/feed.xml wdmisc ! + +"query:Software Development Personal Blogs:(tags # \"sdpb\") and (age < 30)" +https://vkc.sh/feed/ sdpb ! +https://thesquareplanet.com/feed.xml sdpb ! + +"query:Learning Japanese:(tags # \"japanese\")" +https://www.tofugu.com/feed.xml japanese ! diff --git a/.vsnip/htmldjango.json b/.vsnip/htmldjango.json new file mode 100644 index 0000000..9e547c3 --- /dev/null +++ b/.vsnip/htmldjango.json @@ -0,0 +1,1032 @@ +{ + "doctype": { + "prefix": "doctype", + "body": [ + "<!DOCTYPE>", + "$1" + ], + "description": "HTML - Defines the document type", + "scope": "text.html" + }, + "a": { + "prefix": "a", + "body": "<a href=\"$1\">$2</a>$3", + "description": "HTML - Defines a hyperlink", + "scope": "text.html" + }, + "abbr": { + "prefix": "abbr", + "body": "<abbr title=\"$1\">$2</abbr>$3", + "description": "HTML - Defines an abbreviation", + "scope": "text.html" + }, + "address": { + "prefix": "address", + "body": [ + "<address>", + "$1", + "</address>" + ], + "description": "HTML - Defines an address element", + "scope": "text.html" + }, + "area": { + "prefix": "area", + "body": "<area shape=\"$1\" coords=\"$2\" href=\"$3\" alt=\"$4\">$5", + "description": "HTML - Defines an area inside an image map", + "scope": "text.html" + }, + "article": { + "prefix": "article", + "body": [ + "<article>", + "\t$1", + "</article>" + ], + "description": "HTML - Defines an article", + "scope": "text.html" + }, + "aside": { + "prefix": "aside", + "body": [ + "<aside>", + "\t$1", + "</aside>$2" + ], + "description": "HTML - Defines content aside from the page content", + "scope": "text.html" + }, + "audio": { + "prefix": "audio", + "body": [ + "<audio controls>", + "\t$1", + "</audio>" + ], + "description": "HTML - Defines sounds content", + "scope": "text.html" + }, + "b": { + "prefix": "b", + "body": "<b>$1</b>$2", + "description": "HTML - Defines bold text", + "scope": "text.html" + }, + "base": { + "prefix": "base", + "body": "<base href=\"$1\" target=\"$2\">$3", + "description": "HTML - Defines a base URL for all the links in a page", + "scope": "text.html" + }, + "bdi": { + "prefix": "bdi", + "body": "<bdi>$1</bdi>$2", + "description": "HTML - Used to isolate text that is of unknown directionality", + "scope": "text.html" + }, + "bdo": { + "prefix": "bdo", + "body": [ + "<bdo dir=\"$1\">", + "$2", + "</bdo>" + ], + "description": "HTML - Defines the direction of text display", + "scope": "text.html" + }, + "big": { + "prefix": "big", + "body": "<big>$1</big>$2", + "description": "HTML - Used to make text bigger", + "scope": "text.html" + }, + "blockquote": { + "prefix": "blockquote", + "body": [ + "<blockquote cite=\"$2\">", + "\t$1", + "</blockquote>" + ], + "description": "HTML - Defines a long quotation", + "scope": "text.html" + }, + "body": { + "prefix": "body", + "body": [ + "<body>", + "\t$1", + "</body>" + ], + "description": "HTML - Defines the body element", + "scope": "text.html" + }, + "br": { + "prefix": "br", + "body": "<br>", + "description": "HTML - Inserts a single line break", + "scope": "text.html" + }, + "button": { + "prefix": "button", + "body": "<button type=\"$1\">$2</button>$3", + "description": "HTML - Defines a push button", + "scope": "text.html" + }, + "canvas": { + "prefix": "canvas", + "body": "<canvas id=\"$1\">$2</canvas>$3", + "description": "HTML - Defines graphics", + "scope": "text.html" + }, + "caption": { + "prefix": "caption", + "body": "<caption>$1</caption>$2", + "description": "HTML - Defines a table caption", + "scope": "text.html" + }, + "cite": { + "prefix": "cite", + "body": "<cite>$1</cite>$2", + "description": "HTML - Defines a citation", + "scope": "text.html" + }, + "code": { + "prefix": "code", + "body": "<code>$1</code>$2", + "description": "HTML - Defines computer code text", + "scope": "text.html" + }, + "col": { + "prefix": "col", + "body": "<col>$2", + "description": "HTML - Defines attributes for table columns", + "scope": "text.html" + }, + "colgroup": { + "prefix": "colgroup", + "body": [ + "<colgroup>", + "\t$1", + "</colgroup>" + ], + "description": "HTML - Defines group of table columns", + "scope": "text.html" + }, + "command": { + "prefix": "command", + "body": "<command>$1</command>$2", + "description": "HTML - Defines a command button [not supported]", + "scope": "text.html" + }, + "datalist": { + "prefix": "datalist", + "body": [ + "<datalist>", + "\t$1", + "</datalist>" + ], + "description": "HTML - Defines a dropdown list", + "scope": "text.html" + }, + "dd": { + "prefix": "dd", + "body": "<dd>$1</dd>$2", + "description": "HTML - Defines a definition description", + "scope": "text.html" + }, + "del": { + "prefix": "del", + "body": "<del>$1</del>$2", + "description": "HTML - Defines deleted text", + "scope": "text.html" + }, + "details": { + "prefix": "details", + "body": [ + "<details>", + "\t$1", + "</details>" + ], + "description": "HTML - Defines details of an element", + "scope": "text.html" + }, + "dialog": { + "prefix": "dialog", + "body": "<dialog>$1</dialog>$2", + "description": "HTML - Defines a dialog (conversation)", + "scope": "text.html" + }, + "dfn": { + "prefix": "dfn", + "body": "<dfn>$1</dfn>$2", + "description": "HTML - Defines a definition term", + "scope": "text.html" + }, + "div": { + "prefix": "div", + "body": [ + "<div>", + "\t$1", + "</div>" + ], + "description": "HTML - Defines a section in a document", + "scope": "text.html" + }, + "dl": { + "prefix": "dl", + "body": [ + "<dl>", + "\t$1", + "</dl>" + ], + "description": "HTML - Defines a definition list", + "scope": "text.html" + }, + "dt": { + "prefix": "dt", + "body": "<dt>$1</dt>$2", + "description": "HTML - Defines a definition term", + "scope": "text.html" + }, + "em": { + "prefix": "em", + "body": "<em>$1</em>$2", + "description": "HTML - Defines emphasized text", + "scope": "text.html" + }, + "embed": { + "prefix": "embed", + "body": "<embed src=\"$1\">$2", + "description": "HTML - Defines external interactive content ot plugin", + "scope": "text.html" + }, + "fieldset": { + "prefix": "fieldset", + "body": [ + "<fieldset>", + "\t$1", + "</fieldset>" + ], + "description": "HTML - Defines a fieldset", + "scope": "text.html" + }, + "figcaption": { + "prefix": "figcaption", + "body": "<figcaption>$1</figcaption>$2", + "description": "HTML - Defines a caption for a figure", + "scope": "text.html" + }, + "figure": { + "prefix": "figure", + "body": [ + "<figure>", + "\t$1", + "</figure>" + ], + "description": "HTML - Defines a group of media content, and their caption", + "scope": "text.html" + }, + "footer": { + "prefix": "footer", + "body": [ + "<footer>", + "\t$1", + "</footer>" + ], + "description": "HTML - Defines a footer for a section or page", + "scope": "text.html" + }, + "form": { + "prefix": "form", + "body": [ + "<form>", + "\t$1", + "</form>" + ], + "description": "HTML - Defines a form", + "scope": "text.html" + }, + "h1": { + "prefix": "h1", + "body": "<h1>$1</h1>$2", + "description": "HTML - Defines header 1", + "scope": "text.html" + }, + "h2": { + "prefix": "h2", + "body": "<h2>$1</h2>$2", + "description": "HTML - Defines header 2", + "scope": "text.html" + }, + "h3": { + "prefix": "h3", + "body": "<h3>$1</h3>$2", + "description": "HTML - Defines header 3", + "scope": "text.html" + }, + "h4": { + "prefix": "h4", + "body": "<h4>$1</h4>$2", + "description": "HTML - Defines header 4", + "scope": "text.html" + }, + "h5": { + "prefix": "h5", + "body": "<h5>$1</h5>$2", + "description": "HTML - Defines header 5", + "scope": "text.html" + }, + "h6": { + "prefix": "h6", + "body": "<h6>$1</h6>$2", + "description": "HTML - Defines header 6", + "scope": "text.html" + }, + "head": { + "prefix": "head", + "body": [ + "<head>", + "\t$1", + "</head>" + ], + "description": "HTML - Defines information about the document", + "scope": "text.html" + }, + "header": { + "prefix": "header", + "body": [ + "<header>", + "\t$1", + "</header>" + ], + "description": "HTML - Defines a header for a section of page", + "scope": "text.html" + }, + "hgroup": { + "prefix": "hgroup", + "body": [ + "<hgroup>", + "\t$1", + "</hgroup>" + ], + "description": "HTML - Defines information about a section in a document", + "scope": "text.html" + }, + "hr": { + "prefix": "hr", + "body": "<hr>", + "description": "HTML - Defines a horizontal rule", + "scope": "text.html" + }, + "html": { + "prefix": "html", + "body": [ + "<html>", + "\t$1", + "</html>" + ], + "description": "HTML - Defines an html document", + "scope": "text.html" + }, + "html5": { + "prefix": "html5", + "body": [ + "<!DOCTYPE html>", + "<html lang=\"$1en\">", + "\t<head>", + "\t\t<title>$2</title>", + "\t\t<meta charset=\"UTF-8\">", + "\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">", + "\t\t<link href=\"$3css/style.css\" rel=\"stylesheet\">", + "\t</head>", + "\t<body>", + "\t$4", + "\t</body>", + "</html>" + ], + "description": "HTML - Defines a template for a html5 document", + "scope": "text.html" + }, + "i": { + "prefix": "i", + "body": "<i>$1</i>$2", + "description": "HTML - Defines italic text", + "scope": "text.html" + }, + "iframe": { + "prefix": "iframe", + "body": "<iframe src=\"$1\">$2</iframe>$3", + "description": "HTML - Defines an inline sub window", + "scope": "text.html" + }, + "img": { + "prefix": "img", + "body": "<img src=\"$1\" alt=\"$2\">$3", + "description": "HTML - Defines an image", + "scope": "text.html" + }, + "input": { + "prefix": "input", + "body": "<input type=\"$1\" name=\"$2\" value=\"$3\">$4", + "description": "HTML - Defines an input field", + "scope": "text.html" + }, + "ins": { + "prefix": "ins", + "body": "<ins>$1</ins>$2", + "description": "HTML - Defines inserted text", + "scope": "text.html" + }, + "keygen": { + "prefix": "keygen", + "body": "<keygen name=\"$1\">$2", + "description": "HTML - Defines a generated key in a form", + "scope": "text.html" + }, + "kbd": { + "prefix": "kbd", + "body": "<kbd>$1</kbd>$2", + "description": "HTML - Defines keyboard text", + "scope": "text.html" + }, + "label": { + "prefix": "label", + "body": "<label for=\"$1\">$2</label>$3", + "description": "HTML - Defines an inline window", + "scope": "text.html" + }, + "legend": { + "prefix": "legend", + "body": "<legend>$1</legend>$2", + "description": "HTML - Defines a title in a fieldset", + "scope": "text.html" + }, + "li": { + "prefix": "li", + "body": "<li>$1</li>$2", + "description": "HTML - Defines a list item", + "scope": "text.html" + }, + "link": { + "prefix": "link", + "body": "<link rel=\"$1\" type=\"$2\" href=\"$3\">$4", + "description": "HTML - Defines a resource reference", + "scope": "text.html" + }, + "main": { + "prefix": "main", + "body": [ + "<main>", + "\t$1", + "</main>" + ], + "description": "HTML - Defines an image map", + "scope": "text.html" + }, + "map": { + "prefix": "map", + "body": [ + "<map name=\"$1\">", + "\t$2", + "</map>" + ], + "description": "HTML - Defines an image map", + "scope": "text.html" + }, + "mark": { + "prefix": "mark", + "body": "<mark>$1</mark>$2", + "description": "HTML - Defines marked text", + "scope": "text.html" + }, + "menu": { + "prefix": "menu", + "body": [ + "<menu>", + "\t$1", + "</menu>" + ], + "description": "HTML - Defines a menu list", + "scope": "text.html" + }, + "menuitem": { + "prefix": "menuitem", + "body": "<menuitem>$1</menuitem>$2", + "description": "HTML - Defines a menu item [firefox only]", + "scope": "text.html" + }, + "meta": { + "prefix": "meta", + "body": "<meta name=\"$1\" content=\"$2\">$3", + "description": "HTML - Defines meta information", + "scope": "text.html" + }, + "meter": { + "prefix": "meter", + "body": "<meter value=\"$1\">$2</meter>$3", + "description": "HTML - Defines measurement within a predefined range", + "scope": "text.html" + }, + "nav": { + "prefix": "nav", + "body": [ + "<nav>", + "\t$1", + "</nav>" + ], + "description": "HTML - Defines navigation links", + "scope": "text.html" + }, + "noscript": { + "prefix": "noscript", + "body": [ + "<noscript>", + "$1", + "</noscript>" + ], + "description": "HTML - Defines a noscript section", + "scope": "text.html" + }, + "object": { + "prefix": "object", + "body": "<object width=\"$1\" height=\"$2\" data=\"$3\">$4</object>$5", + "description": "HTML - Defines an embedded object", + "scope": "text.html" + }, + "ol": { + "prefix": "ol", + "body": [ + "<ol>", + "\t$1", + "</ol>" + ], + "description": "HTML - Defines an ordered list", + "scope": "text.html" + }, + "optgroup": { + "prefix": "optgroup", + "body": [ + "<optgroup>", + "\t$1", + "</optgroup>" + ], + "description": "HTML - Defines an option group", + "scope": "text.html" + }, + "option": { + "prefix": "option", + "body": "<option value=\"$1\">$2</option>$3", + "description": "HTML - Defines an option in a drop-down list", + "scope": "text.html" + }, + "output": { + "prefix": "output", + "body": "<output name=\"$1\" for=\"$2\">$3</output>$4", + "description": "HTML - Defines some types of output", + "scope": "text.html" + }, + "p": { + "prefix": "p", + "body": "<p>$1</p>$2", + "description": "HTML - Defines a paragraph", + "scope": "text.html" + }, + "param": { + "prefix": "param", + "body": "<param name=\"$1\" value=\"$2\">$3", + "description": "HTML - Defines a parameter for an object", + "scope": "text.html" + }, + "pre": { + "prefix": "pre", + "body": [ + "<pre>$1</pre>" + ], + "description": "HTML - Defines preformatted text", + "scope": "text.html" + }, + "progress": { + "prefix": "progress", + "body": "<progress value=\"$1\" max=\"$2\">$3</progress>$4", + "description": "HTML - Defines progress of a task of any kind", + "scope": "text.html" + }, + "q": { + "prefix": "q", + "body": "<q>$1</q>$2", + "description": "HTML - Defines a short quotation", + "scope": "text.html" + }, + "rp": { + "prefix": "rp", + "body": "<rp>$1</rp>$2", + "description": "HTML - Used in ruby annotations to define what to show browsers that do not support the ruby element", + "scope": "text.html" + }, + "rt": { + "prefix": "rt", + "body": "<rt>$1</rt>$2", + "description": "HTML - Defines explanation to ruby annotations", + "scope": "text.html" + }, + "ruby": { + "prefix": "ruby", + "body": [ + "<ruby>", + "$1", + "</ruby>" + ], + "description": "HTML - Defines ruby annotations", + "scope": "text.html" + }, + "s": { + "prefix": "s", + "body": "<s>$1</s>$2", + "description": "HTML - Used to define strikethrough text", + "scope": "text.html" + }, + "samp": { + "prefix": "samp", + "body": "<samp>$1</samp>$2", + "description": "HTML - Defines sample computer code", + "scope": "text.html" + }, + "script": { + "prefix": "script", + "body": [ + "<script>", + "\t$1", + "</script>" + ], + "description": "HTML - Defines a script", + "scope": "text.html" + }, + "section": { + "prefix": "section", + "body": [ + "<section>", + "\t$1", + "</section>" + ], + "description": "HTML - Defines a section", + "scope": "text.html" + }, + "select": { + "prefix": "select", + "body": [ + "<select>", + "\t$1", + "</select>" + ], + "description": "HTML - Defines a selectable list", + "scope": "text.html" + }, + "small": { + "prefix": "small", + "body": "<small>$1</small>$2", + "description": "HTML - Defines small text", + "scope": "text.html" + }, + "source": { + "prefix": "source", + "body": "<source src=\"$1\" type=\"$2\">$3", + "description": "HTML - Defines media resource", + "scope": "text.html" + }, + "span": { + "prefix": "span", + "body": "<span>$1</span>$2", + "description": "HTML - Defines a section in a document", + "scope": "text.html" + }, + "strong": { + "prefix": "strong", + "body": "<strong>$1</strong>$2", + "description": "HTML - Defines strong text", + "scope": "text.html" + }, + "style": { + "prefix": "style", + "body": [ + "<style>", + "$1", + "</style>" + ], + "description": "HTML - Defines a style definition", + "scope": "text.html" + }, + "sub": { + "prefix": "sub", + "body": "<sub>$1</sub>$2", + "description": "HTML - Defines sub-scripted text", + "scope": "text.html" + }, + "sup": { + "prefix": "sup", + "body": "<sup>$1</sup>$2", + "description": "HTML - Defines super-scripted text", + "scope": "text.html" + }, + "summary": { + "prefix": "summary", + "body": "<summary>$1</summary>$2", + "description": "HTML - Defines a visible heading for the detail element [limited support]", + "scope": "text.html" + }, + "table": { + "prefix": "table", + "body": [ + "<table>", + "\t$1", + "</table>" + ], + "description": "HTML - Defines a table", + "scope": "text.html" + }, + "tbody": { + "prefix": "tbody", + "body": [ + "<tbody>", + "\t$1", + "</tbody>" + ], + "description": "HTML - Defines a table body", + "scope": "text.html" + }, + "td": { + "prefix": "td", + "body": "<td>$1</td>$2", + "description": "HTML - Defines a table cell", + "scope": "text.html" + }, + "textarea": { + "prefix": "textarea", + "body": "<textarea rows=\"$1\" cols=\"$2\">$3</textarea>$4", + "description": "HTML - Defines a text area", + "scope": "text.html" + }, + "tfoot": { + "prefix": "tfoot", + "body": [ + "<tfoot>", + "\t$1", + "</tfoot>" + ], + "description": "HTML - Defines a table footer", + "scope": "text.html" + }, + "thead": { + "prefix": "thead", + "body": [ + "<thead>", + "$1", + "</thead>" + ], + "description": "HTML - Defines a table head", + "scope": "text.html" + }, + "th": { + "prefix": "th", + "body": "<th>$1</th>$2", + "description": "HTML - Defines a table header", + "scope": "text.html" + }, + "time": { + "prefix": "time", + "body": "<time datetime=\"$1\">$2</time>$3", + "description": "HTML - Defines a date/time", + "scope": "text.html" + }, + "title": { + "prefix": "title", + "body": "<title>$1</title>$2", + "description": "HTML - Defines the document title", + "scope": "text.html" + }, + "tr": { + "prefix": "tr", + "body": "<tr>$1</tr>$2", + "description": "HTML - Defines a table row", + "scope": "text.html" + }, + "track": { + "prefix": "track", + "body": "<track src=\"$1\" kind=\"$2\" srclang=\"$3\" label=\"$4\">$5", + "description": "HTML - Defines a table row", + "scope": "text.html" + }, + "u": { + "prefix": "u", + "body": "<u>$1</u>$2", + "description": "HTML - Used to define underlined text", + "scope": "text.html" + }, + "ul": { + "prefix": "ul", + "body": [ + "<ul>", + "\t$1", + "</ul>" + ], + "description": "HTML - Defines an unordered list", + "scope": "text.html" + }, + "var": { + "prefix": "var", + "body": "<var>$1</var>$2", + "description": "HTML - Defines a variable", + "scope": "text.html" + }, + "video": { + "prefix": "video", + "body": [ + "<video width=\"$1\" height=\"$2\" controls>", + "\t$3", + "</video>" + ], + "description": "HTML - Defines a video", + "scope": "text.html" + }, + "block": { + "prefix": "block", + "body": [ + "{% block $1 %}", + "\t$0", + "{% endblock $1 %}" + ], + "description": "Tera - Block" + }, + "{{": { + "prefix": "{{", + "body": [ + "{{ $1 }}" + ], + "description": "Tera - Double curly brackets" + }, + "in": { + "prefix": "in", + "body": [ + "{{ $1 in $2 }}" + ], + "description": "Tera - In checking" + }, + "set": { + "prefix": "set", + "body": [ + "{% set $1 = $2 %}" + ], + "description": "Tera - Assign value" + }, + "set_global": { + "prefix": "set_global", + "body": [ + "{% set_global $1 = $2 %}" + ], + "description": "Tera - Assign global value" + }, + "filtersection": { + "prefix": "filtersection", + "body": [ + "{% filter $1 %}", + "\t$0", + "{% endfilter %}" + ], + "description": "Tera - Filter section" + }, + "filter": { + "prefix": "filter", + "body": [ + "| ${1|lower,upper,wordcount,capitalize,replace,addslashes,slugify,title,trim,trim_start,trim_end,trim_start_matches,trim_end_matches,truncate,linebreaksbr,spaceless,striptags,first,last,nth,join,length,reverse,sort|}" + ], + "description": "Tera - filter" + }, + "if": { + "prefix": "if", + "body": [ + "{% if $1 ${2|is,==,<,>,<=,>=,!=|} $3 %}", + "\t$0", + "{% endif %}" + ], + "description": "Tera - If conditional" + }, + "if2": { + "prefix": "if2", + "body": [ + "{% if $1 ${2|is,==,<,>,<=,>=,!=|} $3 ${4|and,and not,or,or not|} $5 ${6|is,==,<,>,<=,>=,!=|} $7 %}", + "\t$0", + "{% endif %}" + ], + "description": "Tera - If clause with two conditions" + }, + "ifelse": { + "prefix": "ifelse", + "body": [ + "{% if $1 ${2|is,==,<,>,<=,>=,!=|} $3 %}", + "\t$4", + "{% else %}", + "\t$0", + "{% endif %}" + ], + "description": "Tera - If else" + }, + "ifelif": { + "prefix": "ifelif", + "body": [ + "{% if $1 ${2|is,==,<,>,<=,>=,!=|} $3 %}", + "\t$7", + "{% elif $4 ${5|is,==,<,>,<=,>=,!=|} $6 %}", + "\t$8", + "{% else %}", + "\t$0", + "{% endif %}" + ], + "description": "Tera - If elif" + }, + "else": { + "prefix": "else", + "body": [ + "{% else %}", + "\t$0" + ], + "description": "Tera - Else" + }, + "elif": { + "prefix": "elif", + "body": [ + "{% elif $1 ${2|is,==,<,>,<=,>=|} $3 %}", + "\t$0" + ], + "description": "Tera - Elif" + }, + "for": { + "prefix": "for", + "body": [ + "{% for $1 in $2 %}", + "\t$0", + "{% endfor %}" + ], + "description": "Tera - For loop" + }, + "for2": { + "prefix": "for2", + "body": [ + "{% for $1, $2 in $3 %}", + "\t$0", + "{% endfor %}" + ], + "description": "Tera - For loop with two variables" + }, + "forelse": { + "prefix": "forelse", + "body": [ + "{% for $1 in $2 %}", + "\t$0", + "{% endfor %}" + ], + "description": "Tera - For else" + }, + "extends": { + "prefix": "extends", + "body": [ + "{% extends \"$1.html\" %}" + ], + "description": "Tera - Extends" + }, + "macro": { + "prefix": "macro", + "body": [ + "{% macro ${1:macroname}(${2:arg}) %}", + "\t$0", + "{% endmacro ${1:macroname} %}" + ], + "description": "Tera - Macro definition" + }, + "importmacro": { + "prefix": "importmacro", + "body": [ + "{% import \"$1.html\" as $1 %}" + ], + "description": "Tera - Import macro" + }, + "include": { + "prefix": "include", + "body": [ + "{% include $0 %}" + ], + "description": "Tera - Include template" + }, + "includeignoremissing": { + "prefix": "includeignoremissing", + "body": [ + "{% include $1 ignore missing %}" + ], + "description": "Tera - Include with ignore missing" + }, + "includelist": { + "prefix": "includelist", + "body": [ + "{% include [$1, $2] %}" + ], + "description": "Tera - Include list of templates" + } +} diff --git a/.vsnip/plaintex.json b/.vsnip/plaintex.json new file mode 100644 index 0000000..ccb2ab2 --- /dev/null +++ b/.vsnip/plaintex.json @@ -0,0 +1,56 @@ +{ + "noveltemplate": { + "prefix": [ + "noveltemplate" + ], + "body": [ + "\\documentclass[ebook, 12pt, oneside, extrafontsizes]{memoir}", + "\\usepackage[german]{babel}", + "\\usepackage[utf8]{inputenc}", + "\\usepackage{ebgaramond}", + "\\renewcommand{\\baselinestretch}{1.5}", + "\\begin{document}", + "\\frontmatter", + "\\chapterstyle{article}", + "\\pagestyle{plain}", + "\\settocdepth{chapter}", + "\\pagenumbering{gobble}", + "%\\begin{titlingpage*}", + "\\title{$1}", + "\\author{Vithuran Vishnuthas}", + "\\date{}", + "\\maketitle", + "%\\end{titlingpage*}", + "\\tableofcontents*", + "\\mainmatter", + "\\pagenumbering{arabic}", + "\\chapter{$2}", + "$3", + "\\end{document}" + ], + "description": "Template for novel (with chapters)" + }, + "shortstorytemplate": { + "prefix": [ + "shortstorytemplate" + ], + "body": [ + "\\documentclass[ebook, 12pt, oneside, extrafontsizes]{memoir}", + "\\usepackage[german]{babel}", + "\\usepackage[utf8]{inputenc}", + "\\usepackage{ebgaramond}", + "\\renewcommand{\\baselinestretch}{1.5}", + "\\begin{document}", + "\\frontmatter", + "\\pagestyle{plain}", + "\\mainmatter", + "\\title{$1}", + "\\author{Vithuran Vishnuthas}", + "\\date{}", + "\\maketitle", + "$2", + "\\end{document}" + ], + "description": "Template for short story" + } +} diff --git a/.vsnip/tex.json b/.vsnip/tex.json new file mode 100644 index 0000000..ccb2ab2 --- /dev/null +++ b/.vsnip/tex.json @@ -0,0 +1,56 @@ +{ + "noveltemplate": { + "prefix": [ + "noveltemplate" + ], + "body": [ + "\\documentclass[ebook, 12pt, oneside, extrafontsizes]{memoir}", + "\\usepackage[german]{babel}", + "\\usepackage[utf8]{inputenc}", + "\\usepackage{ebgaramond}", + "\\renewcommand{\\baselinestretch}{1.5}", + "\\begin{document}", + "\\frontmatter", + "\\chapterstyle{article}", + "\\pagestyle{plain}", + "\\settocdepth{chapter}", + "\\pagenumbering{gobble}", + "%\\begin{titlingpage*}", + "\\title{$1}", + "\\author{Vithuran Vishnuthas}", + "\\date{}", + "\\maketitle", + "%\\end{titlingpage*}", + "\\tableofcontents*", + "\\mainmatter", + "\\pagenumbering{arabic}", + "\\chapter{$2}", + "$3", + "\\end{document}" + ], + "description": "Template for novel (with chapters)" + }, + "shortstorytemplate": { + "prefix": [ + "shortstorytemplate" + ], + "body": [ + "\\documentclass[ebook, 12pt, oneside, extrafontsizes]{memoir}", + "\\usepackage[german]{babel}", + "\\usepackage[utf8]{inputenc}", + "\\usepackage{ebgaramond}", + "\\renewcommand{\\baselinestretch}{1.5}", + "\\begin{document}", + "\\frontmatter", + "\\pagestyle{plain}", + "\\mainmatter", + "\\title{$1}", + "\\author{Vithuran Vishnuthas}", + "\\date{}", + "\\maketitle", + "$2", + "\\end{document}" + ], + "description": "Template for short story" + } +} diff --git a/.xbindkeysrc b/.xbindkeysrc new file mode 100644 index 0000000..4f0873b --- /dev/null +++ b/.xbindkeysrc @@ -0,0 +1,43 @@ +# increase volume +"amixer set Master 1%+" +m:0x48 + c:35 +Alt+Mod4 + plus + +# decrease volume +"amixer set Master 1%-" +m:0x48 + c:61 +Alt+Mod4 + minus + +# (un)mute volume +"amixer set Master toggle" +XF86AudioMute + +# run app launcher (rofi drun mode) +"rofi -show drun" +m:0x48 + c:65 +Alt+Mod4 + space + +# run clipboard manager selection (rofi + clipcat) +"clipcat-menu -f rofi" +m:0x48 + c:54 +Alt+Mod4 + c + +# run color picker (xcolor) and save to clipboard (clipcat) +"xcolor | xargs -I {} clipcatctl insert {}" +m:0x48 + c:53 +Alt+Mod4 + x + +# open an image (rofi + feh) +"fd . -e png -e jpg -e gif /mnt/files/Pictures | rofi -dmenu | xargs -I {} feh {}" +m:0x48 + c:33 +Alt+Mod4 + p + +# open a document (rofi + pdf) +"fd . -e pdf /mnt/files/ | rofi -dmenu | xargs -I {} zathura {}" +m:0x48 + c:40 +Alt+Mod4 + d + +# save screenshot with selection +"maim -s /mnt/files/Pictures/Screens/$(date +%s)-screen.png" +m:0x0 + c:107 +Print diff --git a/.xprofile b/.xprofile new file mode 100644 index 0000000..301d9ee --- /dev/null +++ b/.xprofile @@ -0,0 +1,7 @@ +xbindkeys +clipcatd +udiskie & + +export XMODIFIERS=@im=fcitx +export QT_IM_MODULE=fcitx +export GTK_IM_MODULE=fcitx |
