Compare commits

...

8 Commits

Author SHA1 Message Date
3101834051 Update generated emacs config 2026-03-07 18:36:36 -05:00
8ddcf1de22 Various emacs config uddates 2026-03-07 18:33:12 -05:00
15e62ed479 Markdown emacs setup 2026-03-07 18:30:35 -05:00
a8315e32f1 UI amelioration 2026-03-07 18:11:50 -05:00
9cb17ede39 New recording app 2026-03-07 18:08:45 -05:00
cd60b775f5 Nicer windows spacing for hyprland 2026-03-07 18:02:01 -05:00
da85946d6a zsh pipx path 2026-03-07 17:59:01 -05:00
24fcd48036 btop config update 2026-03-07 17:58:17 -05:00
8 changed files with 283 additions and 81 deletions

View File

@@ -1,18 +1,18 @@
#? Config file for btop v. 1.4.4
#? Config file for btop v.1.4.6
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
color_theme = "/usr/share/btop/themes/everforest-dark-medium.theme"
#* If the theme set background should be shown, set to False if you want terminal background transparency.
theme_background = False
theme_background = false
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
truecolor = True
truecolor = true
#* Set to true to force tty mode regardless if a real tty has been detected or not.
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
force_tty = False
force_tty = false
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
@@ -22,10 +22,13 @@ presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:defaul
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
vim_keys = True
vim_keys = true
#* Rounded corners on boxes, is ignored if TTY mode is ON.
rounded_corners = True
rounded_corners = true
#* Use terminal synchronized output sequences to reduce flickering on supported terminals.
terminal_sync = true
#* Default symbols to use for graph creation, "braille", "block" or "tty".
#* "braille" offers the highest resolution but might not be included in all fonts.
@@ -60,37 +63,40 @@ update_ms = 2000
proc_sorting = "cpu lazy"
#* Reverse sorting order, True or False.
proc_reversed = False
proc_reversed = false
#* Show processes as a tree.
proc_tree = True
proc_tree = true
#* Use the cpu graph colors in the process list.
proc_colors = True
proc_colors = true
#* Use a darkening gradient in the process list.
proc_gradient = True
proc_gradient = true
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
proc_per_core = True
proc_per_core = true
#* Show process memory as bytes instead of percent.
proc_mem_bytes = True
proc_mem_bytes = true
#* Show cpu graph for each process.
proc_cpu_graphs = True
proc_cpu_graphs = true
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
proc_info_smaps = False
proc_info_smaps = false
#* Show proc box on left side of screen instead of right.
proc_left = False
proc_left = false
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
proc_filter_kernel = False
proc_filter_kernel = false
#* In tree-view, always accumulate child process resources in the parent process.
proc_aggregate = True
proc_aggregate = true
#* Should cpu and memory usage display be preserved for dead processes when paused.
keep_dead_proc_usage = false
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu.
@@ -104,25 +110,28 @@ cpu_graph_lower = "Auto"
show_gpu_info = "Auto"
#* Toggles if the lower CPU graph should be inverted.
cpu_invert_lower = True
cpu_invert_lower = true
#* Set to True to completely disable the lower CPU graph.
cpu_single_graph = False
cpu_single_graph = false
#* Show cpu box at bottom of screen instead of top.
cpu_bottom = False
cpu_bottom = false
#* Shows the system uptime in the CPU box.
show_uptime = True
show_uptime = true
#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo.
show_cpu_watts = true
#* Show cpu temperature.
check_temp = True
check_temp = true
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
cpu_sensor = "Auto"
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
show_coretemp = True
show_coretemp = true
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
@@ -134,17 +143,20 @@ cpu_core_map = ""
temp_scale = "celsius"
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
base_10_sizes = False
base_10_sizes = false
#* Show CPU frequency.
show_cpu_freq = True
show_cpu_freq = true
#* How to calculate CPU frequency, available values: "first", "range", "lowest", "highest" and "average".
freq_mode = "first"
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
clock_format = "%X"
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
background_update = True
background_update = true
#* Custom cpu model name, empty string to disable.
custom_cpu_name = ""
@@ -154,43 +166,43 @@ custom_cpu_name = ""
disks_filter = ""
#* Show graphs instead of meters for memory values.
mem_graphs = True
mem_graphs = true
#* Show mem box below net box instead of above.
mem_below_net = True
mem_below_net = true
#* Count ZFS ARC in cached and available memory.
zfs_arc_cached = True
zfs_arc_cached = true
#* If swap memory should be shown in memory box.
show_swap = True
show_swap = true
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
swap_disk = True
swap_disk = true
#* If mem box should be split to also show disks info.
show_disks = True
show_disks = true
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
only_physical = True
only_physical = true
#* Read disks list from /etc/fstab. This also disables only_physical.
use_fstab = True
use_fstab = true
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
zfs_hide_datasets = False
zfs_hide_datasets = false
#* Set to true to show available disk space for privileged users.
disk_free_priv = False
disk_free_priv = false
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
show_io_stat = True
show_io_stat = true
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
io_mode = False
io_mode = false
#* Set to True to show combined read/write io graphs in io mode.
io_graph_combined = False
io_graph_combined = false
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
#* Example: "/mnt/media:100 /:20 /boot:1".
@@ -202,10 +214,10 @@ net_download = 100
net_upload = 100
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
net_auto = True
net_auto = true
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
net_sync = True
net_sync = true
#* Starts with the Network Interface specified here.
net_iface = ""
@@ -214,26 +226,32 @@ net_iface = ""
base_10_bitrate = "Auto"
#* Show battery stats in top right if battery is present.
show_battery = True
show_battery = true
#* Which battery to use if multiple are present. "Auto" for auto detection.
selected_battery = "Auto"
#* Show power stats of battery next to charge indicator.
show_battery_watts = True
show_battery_watts = true
#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
#* Set loglevel for "~/.local/state/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
log_level = "WARNING"
#* Automatically save current settings to config file on exit.
save_config_on_exit = true
#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
nvml_measure_pcie_speeds = True
nvml_measure_pcie_speeds = true
#* Measure PCIe throughput on AMD cards, may impact performance on certain cards.
rsmi_measure_pcie_speeds = True
rsmi_measure_pcie_speeds = true
#* Horizontally mirror the GPU graph.
gpu_mirror_graph = True
gpu_mirror_graph = true
#* Set which GPU vendors to show. Available values are "nvidia amd intel"
shown_gpus = "nvidia amd intel"
#* Custom gpu0 model name, empty string to disable.
custom_gpu_name0 = ""

View File

@@ -466,7 +466,7 @@ change ~org-directory~. It must be set before org loads!
)
("wP" "Installation Bombardier"
((agenda ""
((org-agenda-span 60)
((org-agenda-span 90)
(org-agenda-start-day "2026-01-29")
(org-agenda-overriding-header "📅 Installation Bombardier")
(org-agenda-prefix-format " %12t") ;; reserve time space
@@ -539,6 +539,14 @@ change ~org-directory~. It must be set before org loads!
)
)
#+end_src
** Default apps
#+begin_src emacs-lisp
(after! org
;; Ensure exported HTML opens in the system browser, not inside Emacs
(setq org-file-apps
(append '(("\\.x?html?\\'" . default))
(assq-delete-all "\\.x?html?\\'" org-file-apps))))
#+end_src
** +Org Superstar mode+
org-modern instead
@@ -546,6 +554,50 @@ org-modern instead
(add-hook 'org-mode-hook (lambda () (org-superstar-mode 1)))
#+end_src
* Markdown
#+begin_src emacs-lisp
(after! grip-mode
(setq grip-binary-path "/home/tpouplier/.local/bin/grip")
)
#+end_src
#+begin_src emacs-lisp
(after! markdown-mode
(setq markdown-header-scaling t)
(custom-set-faces
'(markdown-header-face-1 ((t
:inherit markdown-header-face
:foreground "#fabd2f"
:height 1.8
:weight extra-bold)))
'(markdown-header-face-2 ((t
:inherit markdown-header-face
:foreground "#fe8019"
:height 1.4
:weight extra-bold)))
'(markdown-header-face-3 ((t
:inherit markdown-header-face
:foreground "#fb4934"
:height 1.2
:weight bold)))
'(markdown-header-face-4 ((t
:inherit markdown-header-face
:foreground "#b8bb26"
:height 1.1
:weight bold)))
'(markdown-header-face-5 ((t
:inherit markdown-header-face
:foreground "#83a598"
:height 1.0
:weight bold)))
'(markdown-header-face-6 ((t
:inherit markdown-header-face
:foreground "#d3869b"
:height 1.0
:weight bold))))
)
#+end_src
* PlantUML
#+begin_src emacs-lisp
;; Enable plantuml-mode for PlantUML files
@@ -1772,7 +1824,9 @@ Recently added the quick access entries. Game changer.
#+begin_src emacs-lisp
;; Dirvish config
(after! dirvish
(after! (dirvish dired)
(require 'async)
(dired-async-mode 1)
;; Display icons, file size, timestamps, etc.
(setq dirvish-attributes
'(nerd-icons
@@ -1805,13 +1859,15 @@ Recently added the quick access entries. Game changer.
("d" "~/Downloads/" "Downloads")
("u" "/run/media" "Mounted drives")
("t" "~/.local/share/Trash/files/" "Trash")
)))
))
(setq dirvish-yank-use-rsync t)
(setq dirvish-yank-rsync-args '("-ah" "--info=progress2"))
)
;; Use `p` to open the yank menu
(map! :after dirvish-yank
:map dirvish-mode-map
:n "p" #'dirvish-yank-menu)
#+end_src
#+RESULTS:
@@ -2342,7 +2398,7 @@ Returns nil if no range found (safe, non-blocking)."
(all-resolved t))
(when (and (string-match "ids(\\(.*?\\))" clean)
(not (string-empty-p (s-trim (match-string 1 clean)))))
(dolist (tid (split-string (match-string 1 clean) "[ ,]+" t))
(dolist (tid (split-string (match-string 1 clean) "[[:space:],]+" t))
(let* ((clean-id (replace-regexp-in-string "[\"']\\|id: " "" tid))
(pos (org-id-find clean-id t))
(computed-end (gethash clean-id task-end-map))
@@ -2364,6 +2420,9 @@ Returns nil if no range found (safe, non-blocking)."
;; Priority 2: Use range end if FIXED
((string-equal "t" (org-entry-get nil "FIXED"))
(gortium/org--get-range-end m))
;; Priority 3: Fallback to existing range end if it exists
((gortium/org--get-range-end m)
(gortium/org--get-range-end m))
(t nil))))))
(t nil)))
@@ -2574,10 +2633,27 @@ Returns list of task IDs involved in cycles, or nil if no cycles found."
(push task done-this-loop))))))))
(setq remaining (cl-set-difference remaining done-this-loop))))
;; --- DIAGNOSTICS FOR UNSCHEDULED TASKS ---
(if remaining
(progn
(message "!!! WARNING: %d tasks were NOT scheduled !!!" (length remaining))
(dolist (task remaining)
(pcase-let ((`(,_buf ,pos ,id ,_eff ,blocker ,_fix ,_sch ,_off) task))
(let* ((blocker-string (format "%s" blocker))
(clean-blocker (if (string-match "ids(\\(.*?\\))" blocker-string)
(match-string 1 blocker-string)
"None")))
(message " -> Task [%s] at pos %s is BLOCKED by: %s"
id (marker-position pos) clean-blocker)))))
(message "=== All tasks scheduled successfully! ==="))
;; 3. CLEANUP
(setq org-element-use-cache t)
(org-element-cache-reset 'all)
(message "=== Scheduler completed (%d tasks, %d iterations) ===" (length all-tasks) iter))))
(message "=== Scheduler completed (%d tasks, %d iterations) ===" (length all-tasks) iter)
;; (gortium/org-rollup-parent-ranges)
;; (message "=== All Scheduling and Roll-ups Complete ===")
)))
;; ---------------------------------------------
(defun gortium/org-ensure-task-properties ()
@@ -2935,7 +3011,7 @@ Need chrome... :(
* +Org-Edna+
#+begin_src emacs-lisp
#+begin_src emacs-lisp :tangle no
;; Org-edna for advanced task dependencies
(use-package! org-edna
:after org

View File

@@ -336,7 +336,7 @@
)
("wP" "Installation Bombardier"
((agenda ""
((org-agenda-span 60)
((org-agenda-span 90)
(org-agenda-start-day "2026-01-29")
(org-agenda-overriding-header "📅 Installation Bombardier")
(org-agenda-prefix-format " %12t") ;; reserve time space
@@ -397,6 +397,51 @@
)
)
(after! org
;; Ensure exported HTML opens in the system browser, not inside Emacs
(setq org-file-apps
(append '(("\\.x?html?\\'" . default))
(assq-delete-all "\\.x?html?\\'" org-file-apps))))
(after! grip-mode
(setq grip-binary-path "/home/tpouplier/.local/bin/grip")
)
(after! markdown-mode
(setq markdown-header-scaling t)
(custom-set-faces
'(markdown-header-face-1 ((t
:inherit markdown-header-face
:foreground "#fabd2f"
:height 1.8
:weight extra-bold)))
'(markdown-header-face-2 ((t
:inherit markdown-header-face
:foreground "#fe8019"
:height 1.4
:weight extra-bold)))
'(markdown-header-face-3 ((t
:inherit markdown-header-face
:foreground "#fb4934"
:height 1.2
:weight bold)))
'(markdown-header-face-4 ((t
:inherit markdown-header-face
:foreground "#b8bb26"
:height 1.1
:weight bold)))
'(markdown-header-face-5 ((t
:inherit markdown-header-face
:foreground "#83a598"
:height 1.0
:weight bold)))
'(markdown-header-face-6 ((t
:inherit markdown-header-face
:foreground "#d3869b"
:height 1.0
:weight bold))))
)
;; Enable plantuml-mode for PlantUML files
(add-to-list 'auto-mode-alist '("\\.plantuml\\'" . plantuml-mode))
@@ -988,7 +1033,9 @@ DIFF:
)
;; Dirvish config
(after! dirvish
(after! (dirvish dired)
(require 'async)
(dired-async-mode 1)
;; Display icons, file size, timestamps, etc.
(setq dirvish-attributes
'(nerd-icons
@@ -1021,7 +1068,10 @@ DIFF:
("d" "~/Downloads/" "Downloads")
("u" "/run/media" "Mounted drives")
("t" "~/.local/share/Trash/files/" "Trash")
)))
))
(setq dirvish-yank-use-rsync t)
(setq dirvish-yank-rsync-args '("-ah" "--info=progress2"))
)
;; Use `p` to open the yank menu
(map! :after dirvish-yank
@@ -1475,7 +1525,7 @@ Returns nil if no range found (safe, non-blocking)."
(all-resolved t))
(when (and (string-match "ids(\\(.*?\\))" clean)
(not (string-empty-p (s-trim (match-string 1 clean)))))
(dolist (tid (split-string (match-string 1 clean) "[ ,]+" t))
(dolist (tid (split-string (match-string 1 clean) "[[:space:],]+" t))
(let* ((clean-id (replace-regexp-in-string "[\"']\\|id: " "" tid))
(pos (org-id-find clean-id t))
(computed-end (gethash clean-id task-end-map))
@@ -1497,6 +1547,9 @@ Returns nil if no range found (safe, non-blocking)."
;; Priority 2: Use range end if FIXED
((string-equal "t" (org-entry-get nil "FIXED"))
(gortium/org--get-range-end m))
;; Priority 3: Fallback to existing range end if it exists
((gortium/org--get-range-end m)
(gortium/org--get-range-end m))
(t nil))))))
(t nil)))
@@ -1707,10 +1760,27 @@ Returns list of task IDs involved in cycles, or nil if no cycles found."
(push task done-this-loop))))))))
(setq remaining (cl-set-difference remaining done-this-loop))))
;; --- DIAGNOSTICS FOR UNSCHEDULED TASKS ---
(if remaining
(progn
(message "!!! WARNING: %d tasks were NOT scheduled !!!" (length remaining))
(dolist (task remaining)
(pcase-let ((`(,_buf ,pos ,id ,_eff ,blocker ,_fix ,_sch ,_off) task))
(let* ((blocker-string (format "%s" blocker))
(clean-blocker (if (string-match "ids(\\(.*?\\))" blocker-string)
(match-string 1 blocker-string)
"None")))
(message " -> Task [%s] at pos %s is BLOCKED by: %s"
id (marker-position pos) clean-blocker)))))
(message "=== All tasks scheduled successfully! ==="))
;; 3. CLEANUP
(setq org-element-use-cache t)
(org-element-cache-reset 'all)
(message "=== Scheduler completed (%d tasks, %d iterations) ===" (length all-tasks) iter))))
(message "=== Scheduler completed (%d tasks, %d iterations) ===" (length all-tasks) iter)
;; (gortium/org-rollup-parent-ranges)
;; (message "=== All Scheduling and Roll-ups Complete ===")
)))
;; ---------------------------------------------
(defun gortium/org-ensure-task-properties ()
@@ -1937,13 +2007,3 @@ fallback to today's daily note. Ensures the daily has an Org-roam ID."
(message "Task refiled under '%s' in %s"
headline
(file-name-nondirectory daily-file)))))
;; Org-edna for advanced task dependencies
(use-package! org-edna
:after org
:config
(setq org-edna-use-inheritance t)
(org-edna-mode 1)
(map! :map org-mode-map
:localleader
:desc "Edit Edna rules" "E" #'org-edna-edit))

View File

@@ -150,7 +150,9 @@
;;lean ; for folks with too much to prove
ledger ; be audit you can be
lua ; one-based indices? one-based indices
markdown ; writing docs for people to ignore
(markdown ; writing docs for people to ignore
+grip
+tree-sitter)
;;nim ; python + lisp at the speed of c
(nix ; I hereby declare "nix geht mehr!"
+lsp

View File

@@ -101,8 +101,8 @@ env = WLR_RENDERER_ALLOW_SOFTWARE,1
# https://wiki.hyprland.org/Configuring/Variables/#general
general {
gaps_in = 4.5
gaps_out = 9
gaps_in = 7.5
gaps_out = 15
border_size = 2
@@ -148,7 +148,12 @@ animations {
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
# This prevents the layout from collapsing if you close one window
preserve_split = true # You probably want this
# 0 -> follow mouse, 1 -> always left/top, 2 -> always right/bottom
force_split = 2
}
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
@@ -219,8 +224,8 @@ bind = $mainMod, P, togglesplit, # dwindle
bind = $mainMod, N, movecurrentworkspacetomonitor, -1
bind = $mainMod SHIFT, N, movecurrentworkspacetomonitor, +1
bind = $mainMod, X, swapwindow
bind = $mainMod, B, exec, nerd-dictation begin
bind = $mainMod, G, exec, nerd-dictation end
bind = $mainMod, B, exec, python /home/tpouplier/ExoKortex/1-Projects/Perso/recordntrans/record_transcribe.py
# bind = $mainMod, G, exec, nerd-dictation end
bind = $mainMod, A, exec, $music
# Full screen
@@ -287,8 +292,8 @@ bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# Example special workspace (scratchpad)
bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
bind = $mainMod, S, togglespecialworkspace, tools
bind = $mainMod SHIFT, S, movetoworkspace, special:tools
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
@@ -376,4 +381,42 @@ workspace = 3, name:long-1, monitor:DP-5 # Right screen
workspace = 4, name:long-2, monitor:DP-5 # Right screen
workspace = 5, name:smoll, monitor:eDP-1 # Laptop screen
#workspace = 4, name:windows, monitor:DP-4, on-created-empty:VBoxManage startvm "Windows 11"
#workspace = special:scratchpad, on-created-empty:kitty
workspace = special:tools, layout:dwindle, gapsin:0
# Top Left: btop
windowrule {
name = dashboard-btop
match:class = ^(btop)$
tile = true
workspace = special:tools
}
# Top Right: ncspot
windowrule {
name = dashboard-ncspot
match:class = ^(ncspot)$
tile = true
workspace = special:tools
}
# Bottom Left: ncpamixer
windowrule {
name = dashboard-ncpamixer
match:class = ^(ncpamixer)$
tile = true
workspace = special:tools
}
# Bottom Right: bluetuith
windowrule {
name = dashboard-bluetuith
match:class = ^(bluetuith)$
tile = true
workspace = special:tools
}
# Bind to launch the suite (Run this once)
bind = $mainMod, grave, exec, kitty --class btop btop
bind = $mainMod, grave, exec, kitty --class ncspot ncspot
bind = $mainMod, grave, exec, kitty --class ncpamixer ncpamixer
bind = $mainMod, grave, exec, kitty --class bluetuith bluetuith

View File

@@ -4,11 +4,11 @@
// general settings
"position": "top",
"margin-top": 8,
"margin-top": 15,
"margin-bottom": 0,
"layer": "top",
"margin-left": 8,
"margin-right": 8,
"margin-left": 15,
"margin-right": 15,
"spacing": 10,
"fixed-center": true,
"exclusive": true,

View File

@@ -110,7 +110,7 @@
"car": "",
"default": ["", "", ""]
},
"on-click": "pwvucontrol"
"on-click": "kitty ncpamixer"
},
// bluetooth

View File

@@ -125,3 +125,6 @@ export HYPRSHOT_DIR="Images"
# Atuin
#eval "$(atuin init zsh)"
# Created by `pipx` on 2026-03-03 16:51:31
export PATH="$PATH:/home/tpouplier/.local/bin"