Compare commits
96 Commits
a910474f25
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
89ed2acf2b | ||
|
|
fc11a2202d | ||
|
|
f3be14b0ed | ||
|
|
ea7f187c8b | ||
|
|
5be67afa54 | ||
|
|
3970f9bca7 | ||
|
|
f46000649c | ||
| 9c819d6325 | |||
| a23e71ab5a | |||
| ce836a568c | |||
| 23d7c0d52f | |||
| 129f8ab159 | |||
| 4471fe0bb9 | |||
| 8d699bccd6 | |||
| a99ca6431e | |||
| d5fd5b8c38 | |||
| 979d769bfb | |||
| 08ece46452 | |||
| 4c78b77e60 | |||
| d3b21fb2f1 | |||
| ce12e90225 | |||
| 5c8ad98bb5 | |||
| 1bc335aed0 | |||
| ca9cbe18c5 | |||
| 99c1d3a687 | |||
| a8f2dd1bce | |||
| 7b92c7dcbb | |||
| e33cc7c7fb | |||
| 753cac807c | |||
| c5cf7ad409 | |||
| c13bf64d6a | |||
| 50707192f5 | |||
| d63a4cb533 | |||
| 1efeb4764d | |||
| a3c32d0e19 | |||
| b9edb81cd6 | |||
| f619b691e9 | |||
| 695d4b58c1 | |||
| dc9a7b745c | |||
| bc978af2c5 | |||
| 216df5e146 | |||
| 260532282c | |||
| 76ba75ccbf | |||
| c436d5b27a | |||
| 7b2ca206b5 | |||
| fd8e4789b6 | |||
| bcf9cfa699 | |||
| 2f533116b7 | |||
| 9133031e6b | |||
| 7a43bcb1b2 | |||
| 0a96bc9749 | |||
| 21046c29b9 | |||
| e3b7132c2c | |||
| 15f2bc7dcc | |||
| 0c13fafaf5 | |||
| 9fec1ef120 | |||
| 5128c4738c | |||
| 37a8a61735 | |||
| 5cd3789f0b | |||
| 95f92513e7 | |||
| d648575024 | |||
| a2ffeb7b85 | |||
| e46005a572 | |||
| 842a2b11dd | |||
| 8777394f78 | |||
| 04e6788a9d | |||
| 58c131d136 | |||
| 2458a02688 | |||
| 9db5b36b47 | |||
| d274f1459e | |||
| 0739e2a869 | |||
| 3137156dd0 | |||
| 24ce2ed255 | |||
| 9479f344d2 | |||
| b8d1e4e424 | |||
| 221715e9fe | |||
| e66ab9f874 | |||
| b9f98b8e3a | |||
| a347067273 | |||
| df71c06254 | |||
| 41dcdf6bb5 | |||
| c30f2f9185 | |||
| e53f5de1b8 | |||
| bf82c8933e | |||
| 3e33db31e3 | |||
| 37f1825fc3 | |||
| 14bda4adfb | |||
| f46088a82e | |||
| 7bd0d2c56d | |||
| b22c63a318 | |||
| a540c12262 | |||
| 0ddf6164fe | |||
| 55d4f80394 | |||
| 0a14893132 | |||
| 63c7e015b5 | |||
| d8faced14a |
@@ -1,17 +0,0 @@
|
||||
# Clone repo
|
||||
git clone --bare https://kitsunehosting.net/gitea/Kenwood/dotfiles.git $HOME/.dotfiles
|
||||
|
||||
# Make a temp alias (will be perminant via .zshrc)
|
||||
alias config='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
|
||||
|
||||
# Pull stuff down!
|
||||
config checkout
|
||||
|
||||
# If things offend, backup or delete existing/differeing files.
|
||||
# This could work but idk
|
||||
mkdir -p .config-backup && \
|
||||
config checkout 2>&1 | egrep "\s+\." | awk {'print $1'} | \
|
||||
xargs -I{} mv {} .config-backup/{}
|
||||
|
||||
# Also use this to keep it all neat!
|
||||
config config --local status.showUntrackedFiles no
|
||||
8
.FreeCAD/Macro/DisableDominantMode.FCMacro
Normal file
8
.FreeCAD/Macro/DisableDominantMode.FCMacro
Normal file
@@ -0,0 +1,8 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Macro Begin: /home/joe/.FreeCAD/Macro/DisableDominantMode.FCMacro +++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
import FreeCAD
|
||||
|
||||
# Gui.runCommand('Std_DlgMacroRecord',0)
|
||||
# Gui.runCommand('Std_DlgCustomize',0)
|
||||
# Macro End: /home/joe/.FreeCAD/Macro/DisableDominantMode.FCMacro +++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
8
.FreeCAD/Macro/EnableDominantMode.FCMacro
Normal file
8
.FreeCAD/Macro/EnableDominantMode.FCMacro
Normal file
@@ -0,0 +1,8 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Macro Begin: /home/joe/.FreeCAD/Macro/EnableDominantMode.FCMacro +++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
import FreeCAD
|
||||
|
||||
# Gui.runCommand('Std_DlgMacroRecord',0)
|
||||
# Gui.runCommand('Std_DlgCustomize',0)
|
||||
# Macro End: /home/joe/.FreeCAD/Macro/EnableDominantMode.FCMacro +++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
3803
.FreeCAD/Macro/FCCircularText.FCMacro
Normal file
3803
.FreeCAD/Macro/FCCircularText.FCMacro
Normal file
File diff suppressed because one or more lines are too long
3
.FreeCAD/Notes.md
Normal file
3
.FreeCAD/Notes.md
Normal file
@@ -0,0 +1,3 @@
|
||||
Diameter: ∅
|
||||
Depth:
|
||||
Counterbore: ⌴
|
||||
14
.FreeCAD/toolbits/Bit/125_Drill.fctb
Normal file
14
.FreeCAD/toolbits/Bit/125_Drill.fctb
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"version": 2,
|
||||
"name": "1/8th Drill Bit",
|
||||
"shape": "drill.fcstd",
|
||||
"parameter": {
|
||||
"Chipload": "0.000 in",
|
||||
"Diameter": "0.125 in",
|
||||
"Flutes": "0",
|
||||
"Length": "0.750 in",
|
||||
"Material": "HSS",
|
||||
"TipAngle": "135.000 \u00b0"
|
||||
},
|
||||
"attribute": {}
|
||||
}
|
||||
16
.FreeCAD/toolbits/Bit/316_Endmill.fctb
Normal file
16
.FreeCAD/toolbits/Bit/316_Endmill.fctb
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"version": 2,
|
||||
"name": "3/16 Endmill",
|
||||
"shape": "endmill.fcstd",
|
||||
"parameter": {
|
||||
"Chipload": "0.000 in",
|
||||
"CuttingEdgeHeight": "0.600 \"",
|
||||
"Diameter": "0.187 \"",
|
||||
"Flutes": "0",
|
||||
"Length": "1.500 \"",
|
||||
"Material": "HSS",
|
||||
"ShankDiameter": "0.315 \"",
|
||||
"SpindleDirection": "Forward"
|
||||
},
|
||||
"attribute": {}
|
||||
}
|
||||
14
.FreeCAD/toolbits/Bit/45degree_chamfer.fctb
Normal file
14
.FreeCAD/toolbits/Bit/45degree_chamfer.fctb
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"version": 2,
|
||||
"name": "45 Deg. Chamfer",
|
||||
"shape": "chamfer.fcstd",
|
||||
"parameter": {
|
||||
"CuttingEdgeAngle": "45.0000 \u00b0",
|
||||
"CuttingEdgeHeight": "6.3500 mm",
|
||||
"Diameter": "12.3323 mm",
|
||||
"Length": "30.0000 mm",
|
||||
"ShankDiameter": "6.3500 mm",
|
||||
"TipDiameter": "5.0000 mm"
|
||||
},
|
||||
"attribute": {}
|
||||
}
|
||||
14
.FreeCAD/toolbits/Bit/5mm-thread-cutter.fctb
Normal file
14
.FreeCAD/toolbits/Bit/5mm-thread-cutter.fctb
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"version": 2,
|
||||
"name": "5mm-thread-cutter",
|
||||
"shape": "thread-mill.fcstd",
|
||||
"parameter": {
|
||||
"Crest": "0.10 mm",
|
||||
"Diameter": "5.00 mm",
|
||||
"Length": "50.00 mm",
|
||||
"NeckDiameter": "3.00 mm",
|
||||
"NeckLength": "20.00 mm",
|
||||
"ShankDiameter": "5.00 mm"
|
||||
},
|
||||
"attribute": {}
|
||||
}
|
||||
11
.FreeCAD/toolbits/Bit/5mm_Drill.fctb
Normal file
11
.FreeCAD/toolbits/Bit/5mm_Drill.fctb
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"version": 2,
|
||||
"name": "5mm Drill",
|
||||
"shape": "drill.fcstd",
|
||||
"parameter": {
|
||||
"Diameter": "5.0000 mm",
|
||||
"Length": "50.0000 mm",
|
||||
"TipAngle": "119.0000 \u00b0"
|
||||
},
|
||||
"attribute": {}
|
||||
}
|
||||
12
.FreeCAD/toolbits/Bit/5mm_Endmill.fctb
Normal file
12
.FreeCAD/toolbits/Bit/5mm_Endmill.fctb
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"version": 2,
|
||||
"name": "5mm Endmill",
|
||||
"shape": "endmill.fcstd",
|
||||
"parameter": {
|
||||
"CuttingEdgeHeight": "30.0000 mm",
|
||||
"Diameter": "5.0000 mm",
|
||||
"Length": "50.0000 mm",
|
||||
"ShankDiameter": "3.0000 mm"
|
||||
},
|
||||
"attribute": {}
|
||||
}
|
||||
14
.FreeCAD/toolbits/Bit/60degree_Vbit.fctb
Normal file
14
.FreeCAD/toolbits/Bit/60degree_Vbit.fctb
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"version": 2,
|
||||
"name": "60 Deg. V-Bit",
|
||||
"shape": "v-bit.fcstd",
|
||||
"parameter": {
|
||||
"CuttingEdgeAngle": "60.0000 \u00b0",
|
||||
"Diameter": "10.0000 mm",
|
||||
"CuttingEdgeHeight": "1.0000 mm",
|
||||
"TipDiameter": "1.0000 mm",
|
||||
"Length": "20.0000 mm",
|
||||
"ShankDiameter": "5.0000 mm"
|
||||
},
|
||||
"attribute": {}
|
||||
}
|
||||
12
.FreeCAD/toolbits/Bit/6mm_Ball_End.fctb
Normal file
12
.FreeCAD/toolbits/Bit/6mm_Ball_End.fctb
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"version": 2,
|
||||
"name": "6mm Ball End",
|
||||
"shape": "ballend.fcstd",
|
||||
"parameter": {
|
||||
"CuttingEdgeHeight": "40.0000 mm",
|
||||
"Diameter": "6.0000 mm",
|
||||
"Length": "50.0000 mm",
|
||||
"ShankDiameter": "3.0000 mm"
|
||||
},
|
||||
"attribute": {}
|
||||
}
|
||||
13
.FreeCAD/toolbits/Bit/6mm_Bullnose.fctb
Normal file
13
.FreeCAD/toolbits/Bit/6mm_Bullnose.fctb
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"version": 2,
|
||||
"name": "6 mm Bull Nose",
|
||||
"shape": "bullnose.fcstd",
|
||||
"parameter": {
|
||||
"CuttingEdgeHeight": "40.0000 mm",
|
||||
"Diameter": "6.0000 mm",
|
||||
"FlatRadius": "1.5000 mm",
|
||||
"Length": "50.0000 mm",
|
||||
"ShankDiameter": "3.0000 mm"
|
||||
},
|
||||
"attribute": {}
|
||||
}
|
||||
11
.FreeCAD/toolbits/Bit/probe.fctb
Normal file
11
.FreeCAD/toolbits/Bit/probe.fctb
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"version": 2,
|
||||
"name": "Probe",
|
||||
"shape": "probe.fcstd",
|
||||
"parameter": {
|
||||
"Diameter": "6.0000 mm",
|
||||
"Length": "50.0000 mm",
|
||||
"ShaftDiameter": "4.0000 mm"
|
||||
},
|
||||
"attribute": {}
|
||||
}
|
||||
16
.FreeCAD/toolbits/Bit/singleFlute8th_Endmill.fctb
Normal file
16
.FreeCAD/toolbits/Bit/singleFlute8th_Endmill.fctb
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"version": 2,
|
||||
"name": "Single Flute 1/8th inch endmill",
|
||||
"shape": "endmill.fcstd",
|
||||
"parameter": {
|
||||
"Chipload": "0.000 in",
|
||||
"CuttingEdgeHeight": "0.600 \"",
|
||||
"Diameter": "0.125 \"",
|
||||
"Flutes": "0",
|
||||
"Length": "1.000 \"",
|
||||
"Material": "HSS",
|
||||
"ShankDiameter": "0.315 \"",
|
||||
"SpindleDirection": "Forward"
|
||||
},
|
||||
"attribute": {}
|
||||
}
|
||||
14
.FreeCAD/toolbits/Bit/slittingsaw.fctb
Normal file
14
.FreeCAD/toolbits/Bit/slittingsaw.fctb
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"version": 2,
|
||||
"name": "Slitting Saw",
|
||||
"shape": "slittingsaw.fcstd",
|
||||
"parameter": {
|
||||
"BladeThickness": "3.0000 mm",
|
||||
"CapHeight": "3.0000 mm",
|
||||
"CapDiameter": "8.0000 mm",
|
||||
"Diameter": "76.2000 mm",
|
||||
"Length": "50.0000 mm",
|
||||
"ShankDiameter": "19.0500 mm"
|
||||
},
|
||||
"attribute": {}
|
||||
}
|
||||
41
.FreeCAD/toolbits/Library/Default.fctl
Normal file
41
.FreeCAD/toolbits/Library/Default.fctl
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"tools": [
|
||||
{
|
||||
"nr": 1,
|
||||
"path": "5mm_Endmill.fctb"
|
||||
},
|
||||
{
|
||||
"nr": 2,
|
||||
"path": "5mm_Drill.fctb"
|
||||
},
|
||||
{
|
||||
"nr": 3,
|
||||
"path": "6mm_Ball_End.fctb"
|
||||
},
|
||||
{
|
||||
"nr": 4,
|
||||
"path": "6mm_Bullnose.fctb"
|
||||
},
|
||||
{
|
||||
"nr": 5,
|
||||
"path": "60degree_Vbit.fctb"
|
||||
},
|
||||
{
|
||||
"nr": 6,
|
||||
"path": "45degree_chamfer.fctb"
|
||||
},
|
||||
{
|
||||
"nr": 7,
|
||||
"path": "slittingsaw.fctb"
|
||||
},
|
||||
{
|
||||
"nr": 8,
|
||||
"path": "probe.fctb"
|
||||
},
|
||||
{
|
||||
"nr": 9,
|
||||
"path": "5mm-thread-cutter.fctb"
|
||||
}
|
||||
],
|
||||
"version": 1
|
||||
}
|
||||
13
.FreeCAD/toolbits/Library/Tidal Force.fctl
Normal file
13
.FreeCAD/toolbits/Library/Tidal Force.fctl
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"tools": [
|
||||
{
|
||||
"nr": 1,
|
||||
"path": "125_Drill.fctb"
|
||||
},
|
||||
{
|
||||
"nr": 2,
|
||||
"path": "singleFlute8th_Endmill.fctb"
|
||||
}
|
||||
],
|
||||
"version": 1
|
||||
}
|
||||
88
.FreeCAD/toolbits/README.md
Normal file
88
.FreeCAD/toolbits/README.md
Normal file
@@ -0,0 +1,88 @@
|
||||
# Tools
|
||||
|
||||
Each tool is stored as a JSON file which has the shape's path and values for all attributes of the shape.
|
||||
It also includes all additional parameters and their values.
|
||||
|
||||
Storing a tool as a JSON file sounds great but eliminates the option of an accurate thumbnail. On the other hand,
|
||||
storing each tool as a `*.fcstd` file requires more space and does not allow for generating tools. If one has an
|
||||
extensive tool aresenal they might want to script the generation of tools which is easily done for a `*.json` file but
|
||||
practically impossible for `*.fcstd` files.
|
||||
|
||||
When a tool is instantiated in a job the PDN body is created from the shape and the attributes and constraints are set
|
||||
according to the values from the JSON file. All additional parameters are created as properties on the object. This
|
||||
provides the correct shape and dimensions which can be used to generate a point cloud or mesh for advanced
|
||||
algorithms (and potentially simulation).
|
||||
|
||||
# Tool Libraries
|
||||
|
||||
Due to each tool being stored in its own file and the storage/organization of those files being quite flexible the
|
||||
importance of a tool library for organisational purposes is quite diminished. The user is free to organise their tools
|
||||
in whichever directory hierarchy they see fit and can also name them as best fits their use and organisation. A
|
||||
_tool library_ is nevertheless a great representation for a physical grouping of tools, such as in an automatic tool
|
||||
changer.
|
||||
|
||||
A tool library is a (JSON) file with a mapping of tool id to the path of the tool file. As a consequence each tool
|
||||
can be in multiple libraries and doesn't have an `id` of it's own. The `id` is a property of the library.
|
||||
|
||||
If a tool from a tool library (or an entire tool library) is added to a job it retains its `id` from the library as a
|
||||
property. Adding a tool bit directly rsults in the tool getting the next free id assigned.
|
||||
|
||||
# Tool Controllers
|
||||
|
||||
They largely stay the same as they are today. As an additional feature it should be possible to _copy_ a TC, which
|
||||
allows for easy feed/speed changes for the same tool.
|
||||
|
||||
Above requirement highlights one change though, that the `id` should be a property of the Bit, and not of the TC.
|
||||
There are two requirements that are currently mapped to a single `id`. There needs to be an identification of which
|
||||
TC is being used by a certain op, and which tool number to use for a `M6` command.
|
||||
|
||||
# Paths and Extensibility
|
||||
|
||||
The following directory structure is used for supplied (shipped with FreeCAD) tools:
|
||||
```
|
||||
Tools
|
||||
+ Bit
|
||||
+ Library
|
||||
+ Shape
|
||||
```
|
||||
|
||||
Strictly speaking a user is free to store their tools wherever they want and however they want. By default the file
|
||||
dialog will open the corresponding directory (depending on context), or whichever directory the user opened last.
|
||||
|
||||
Above directory structure with the most common default tools shipped with FreeCAD should be installed analogous to
|
||||
TechDraw's templates.
|
||||
|
||||
## How to create a new tool
|
||||
|
||||
1. Set the tool's Label, this will show up in the object tree
|
||||
1. Select a tool shape from the existing shape files. If your tool doesn't exist, you'll have to create a new shape,
|
||||
see below for details.
|
||||
1. Each tool bit shape has its own set of parameters, fill them with the tool's values.
|
||||
1. Select additional parameters
|
||||
1. Save the tool under path/file that makes sense to you
|
||||
|
||||
|
||||
## How to create a new tool bit Shape
|
||||
|
||||
The shape file for a tool bit is expected to contain a PD body which represents the tool as a 3d solid. The PD body
|
||||
should be parametric based on a PropertyBag object so that, when the properties of the PropertyBag are changed the
|
||||
solid is updated to the correct representation.
|
||||
|
||||
1. Create a new FreeCAD document
|
||||
1. Open the `PartDesign` workbench, create a body and give the body a label you want to show up in the bit selection.
|
||||
1. Open the Path workbench and (with the PD body selected) create a PropertyBag,
|
||||
menu 'Path' -> 'Utils' -> 'Property Bag'
|
||||
* this creates a PropertyBag object inside the Body (assuming it was selected)
|
||||
* add properties to which define the tool bit's shape and put those into the group 'Shape'
|
||||
* add any other properties to the bag which might be useful for the tool bit
|
||||
1. Construct the body of the tool bit and assign expressions referencing properties from the PropertyBag (in the
|
||||
`Shape` Group) for all constraints.
|
||||
* Position the tip of the tool bit on the origin (0,0)
|
||||
1. Save the document as a new file in the Shape directory
|
||||
* Before saving the document make sure you have _Save Thumbnail_ selected, and _Add program logo_ deselected in
|
||||
FreeCAD's preferences.
|
||||
* Also make sure to switch to _Front View_ and _Fit content to screen_
|
||||
* Whatever you see when saving the document will end up being the visual representation of tool bits with this shape
|
||||
|
||||
Not that 'Shape' is the only property group which has special meaning for tool bits. All other property groups are
|
||||
copied verbatim to the ToolBit object when one is created.
|
||||
1
.config/nano/nanorc
Normal file
1
.config/nano/nanorc
Normal file
@@ -0,0 +1 @@
|
||||
include "/usr/share/nano/*.nanorc"
|
||||
864
.config/neofetch/config.conf
Normal file
864
.config/neofetch/config.conf
Normal file
@@ -0,0 +1,864 @@
|
||||
# See this wiki page for more info:
|
||||
# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info
|
||||
print_info() {
|
||||
info title
|
||||
info underline
|
||||
|
||||
info "OS" distro
|
||||
info "Host" model
|
||||
info "Kernel" kernel
|
||||
info "Uptime" uptime
|
||||
info "Packages" packages
|
||||
info "Shell" shell
|
||||
info "Resolution" resolution
|
||||
info "DE" de
|
||||
info "WM" wm
|
||||
info "WM Theme" wm_theme
|
||||
info "Theme" theme
|
||||
info "Icons" icons
|
||||
info "Terminal" term
|
||||
info "Terminal Font" term_font
|
||||
info "CPU" cpu
|
||||
info "GPU" gpu
|
||||
info "Memory" memory
|
||||
|
||||
info "GPU Driver" gpu_driver # Linux/macOS only
|
||||
# info "CPU Usage" cpu_usage
|
||||
# info "Disk" disk
|
||||
# info "Battery" battery
|
||||
# info "Font" font
|
||||
# info "Song" song
|
||||
# [[ "$player" ]] && prin "Music Player" "$player"
|
||||
# info "Local IP" local_ip
|
||||
# info "Public IP" public_ip
|
||||
# info "Users" users
|
||||
# info "Locale" locale # This only works on glibc systems.
|
||||
|
||||
info cols
|
||||
}
|
||||
|
||||
# Title
|
||||
|
||||
|
||||
# Hide/Show Fully qualified domain name.
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --title_fqdn
|
||||
title_fqdn="off"
|
||||
|
||||
|
||||
# Kernel
|
||||
|
||||
|
||||
# Shorten the output of the kernel function.
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --kernel_shorthand
|
||||
# Supports: Everything except *BSDs (except PacBSD and PC-BSD)
|
||||
#
|
||||
# Example:
|
||||
# on: '4.8.9-1-ARCH'
|
||||
# off: 'Linux 4.8.9-1-ARCH'
|
||||
kernel_shorthand="on"
|
||||
|
||||
|
||||
# Distro
|
||||
|
||||
|
||||
# Shorten the output of the distro function
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'tiny', 'off'
|
||||
# Flag: --distro_shorthand
|
||||
# Supports: Everything except Windows and Haiku
|
||||
distro_shorthand="off"
|
||||
|
||||
# Show/Hide OS Architecture.
|
||||
# Show 'x86_64', 'x86' and etc in 'Distro:' output.
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --os_arch
|
||||
#
|
||||
# Example:
|
||||
# on: 'Arch Linux x86_64'
|
||||
# off: 'Arch Linux'
|
||||
os_arch="on"
|
||||
|
||||
|
||||
# Uptime
|
||||
|
||||
|
||||
# Shorten the output of the uptime function
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'tiny', 'off'
|
||||
# Flag: --uptime_shorthand
|
||||
#
|
||||
# Example:
|
||||
# on: '2 days, 10 hours, 3 mins'
|
||||
# tiny: '2d 10h 3m'
|
||||
# off: '2 days, 10 hours, 3 minutes'
|
||||
uptime_shorthand="on"
|
||||
|
||||
|
||||
# Memory
|
||||
|
||||
|
||||
# Show memory pecentage in output.
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --memory_percent
|
||||
#
|
||||
# Example:
|
||||
# on: '1801MiB / 7881MiB (22%)'
|
||||
# off: '1801MiB / 7881MiB'
|
||||
memory_percent="off"
|
||||
|
||||
# Change memory output unit.
|
||||
#
|
||||
# Default: 'mib'
|
||||
# Values: 'kib', 'mib', 'gib'
|
||||
# Flag: --memory_unit
|
||||
#
|
||||
# Example:
|
||||
# kib '1020928KiB / 7117824KiB'
|
||||
# mib '1042MiB / 6951MiB'
|
||||
# gib: ' 0.98GiB / 6.79GiB'
|
||||
memory_unit="mib"
|
||||
|
||||
|
||||
# Packages
|
||||
|
||||
|
||||
# Show/Hide Package Manager names.
|
||||
#
|
||||
# Default: 'tiny'
|
||||
# Values: 'on', 'tiny' 'off'
|
||||
# Flag: --package_managers
|
||||
#
|
||||
# Example:
|
||||
# on: '998 (pacman), 8 (flatpak), 4 (snap)'
|
||||
# tiny: '908 (pacman, flatpak, snap)'
|
||||
# off: '908'
|
||||
package_managers="on"
|
||||
|
||||
|
||||
# Shell
|
||||
|
||||
|
||||
# Show the path to $SHELL
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --shell_path
|
||||
#
|
||||
# Example:
|
||||
# on: '/bin/bash'
|
||||
# off: 'bash'
|
||||
shell_path="off"
|
||||
|
||||
# Show $SHELL version
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --shell_version
|
||||
#
|
||||
# Example:
|
||||
# on: 'bash 4.4.5'
|
||||
# off: 'bash'
|
||||
shell_version="on"
|
||||
|
||||
|
||||
# CPU
|
||||
|
||||
|
||||
# CPU speed type
|
||||
#
|
||||
# Default: 'bios_limit'
|
||||
# Values: 'scaling_cur_freq', 'scaling_min_freq', 'scaling_max_freq', 'bios_limit'.
|
||||
# Flag: --speed_type
|
||||
# Supports: Linux with 'cpufreq'
|
||||
# NOTE: Any file in '/sys/devices/system/cpu/cpu0/cpufreq' can be used as a value.
|
||||
speed_type="bios_limit"
|
||||
|
||||
# CPU speed shorthand
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'.
|
||||
# Flag: --speed_shorthand
|
||||
# NOTE: This flag is not supported in systems with CPU speed less than 1 GHz
|
||||
#
|
||||
# Example:
|
||||
# on: 'i7-6500U (4) @ 3.1GHz'
|
||||
# off: 'i7-6500U (4) @ 3.100GHz'
|
||||
speed_shorthand="off"
|
||||
|
||||
# Enable/Disable CPU brand in output.
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --cpu_brand
|
||||
#
|
||||
# Example:
|
||||
# on: 'Intel i7-6500U'
|
||||
# off: 'i7-6500U (4)'
|
||||
cpu_brand="on"
|
||||
|
||||
# CPU Speed
|
||||
# Hide/Show CPU speed.
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --cpu_speed
|
||||
#
|
||||
# Example:
|
||||
# on: 'Intel i7-6500U (4) @ 3.1GHz'
|
||||
# off: 'Intel i7-6500U (4)'
|
||||
cpu_speed="on"
|
||||
|
||||
# CPU Cores
|
||||
# Display CPU cores in output
|
||||
#
|
||||
# Default: 'logical'
|
||||
# Values: 'logical', 'physical', 'off'
|
||||
# Flag: --cpu_cores
|
||||
# Support: 'physical' doesn't work on BSD.
|
||||
#
|
||||
# Example:
|
||||
# logical: 'Intel i7-6500U (4) @ 3.1GHz' (All virtual cores)
|
||||
# physical: 'Intel i7-6500U (2) @ 3.1GHz' (All physical cores)
|
||||
# off: 'Intel i7-6500U @ 3.1GHz'
|
||||
cpu_cores="logical"
|
||||
|
||||
# CPU Temperature
|
||||
# Hide/Show CPU temperature.
|
||||
# Note the temperature is added to the regular CPU function.
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'C', 'F', 'off'
|
||||
# Flag: --cpu_temp
|
||||
# Supports: Linux, BSD
|
||||
# NOTE: For FreeBSD and NetBSD-based systems, you'll need to enable
|
||||
# coretemp kernel module. This only supports newer Intel processors.
|
||||
#
|
||||
# Example:
|
||||
# C: 'Intel i7-6500U (4) @ 3.1GHz [27.2°C]'
|
||||
# F: 'Intel i7-6500U (4) @ 3.1GHz [82.0°F]'
|
||||
# off: 'Intel i7-6500U (4) @ 3.1GHz'
|
||||
cpu_temp="off"
|
||||
|
||||
|
||||
# GPU
|
||||
|
||||
|
||||
# Enable/Disable GPU Brand
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --gpu_brand
|
||||
#
|
||||
# Example:
|
||||
# on: 'AMD HD 7950'
|
||||
# off: 'HD 7950'
|
||||
gpu_brand="on"
|
||||
|
||||
# Which GPU to display
|
||||
#
|
||||
# Default: 'all'
|
||||
# Values: 'all', 'dedicated', 'integrated'
|
||||
# Flag: --gpu_type
|
||||
# Supports: Linux
|
||||
#
|
||||
# Example:
|
||||
# all:
|
||||
# GPU1: AMD HD 7950
|
||||
# GPU2: Intel Integrated Graphics
|
||||
#
|
||||
# dedicated:
|
||||
# GPU1: AMD HD 7950
|
||||
#
|
||||
# integrated:
|
||||
# GPU1: Intel Integrated Graphics
|
||||
gpu_type="all"
|
||||
|
||||
|
||||
# Resolution
|
||||
|
||||
|
||||
# Display refresh rate next to each monitor
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --refresh_rate
|
||||
# Supports: Doesn't work on Windows.
|
||||
#
|
||||
# Example:
|
||||
# on: '1920x1080 @ 60Hz'
|
||||
# off: '1920x1080'
|
||||
refresh_rate="off"
|
||||
|
||||
|
||||
# Gtk Theme / Icons / Font
|
||||
|
||||
|
||||
# Shorten output of GTK Theme / Icons / Font
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --gtk_shorthand
|
||||
#
|
||||
# Example:
|
||||
# on: 'Numix, Adwaita'
|
||||
# off: 'Numix [GTK2], Adwaita [GTK3]'
|
||||
gtk_shorthand="off"
|
||||
|
||||
|
||||
# Enable/Disable gtk2 Theme / Icons / Font
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --gtk2
|
||||
#
|
||||
# Example:
|
||||
# on: 'Numix [GTK2], Adwaita [GTK3]'
|
||||
# off: 'Adwaita [GTK3]'
|
||||
gtk2="on"
|
||||
|
||||
# Enable/Disable gtk3 Theme / Icons / Font
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --gtk3
|
||||
#
|
||||
# Example:
|
||||
# on: 'Numix [GTK2], Adwaita [GTK3]'
|
||||
# off: 'Numix [GTK2]'
|
||||
gtk3="on"
|
||||
|
||||
|
||||
# IP Address
|
||||
|
||||
|
||||
# Website to ping for the public IP
|
||||
#
|
||||
# Default: 'http://ident.me'
|
||||
# Values: 'url'
|
||||
# Flag: --ip_host
|
||||
public_ip_host="http://ident.me"
|
||||
|
||||
# Public IP timeout.
|
||||
#
|
||||
# Default: '2'
|
||||
# Values: 'int'
|
||||
# Flag: --ip_timeout
|
||||
public_ip_timeout=2
|
||||
|
||||
|
||||
# Desktop Environment
|
||||
|
||||
|
||||
# Show Desktop Environment version
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --de_version
|
||||
de_version="on"
|
||||
|
||||
|
||||
# Disk
|
||||
|
||||
|
||||
# Which disks to display.
|
||||
# The values can be any /dev/sdXX, mount point or directory.
|
||||
# NOTE: By default we only show the disk info for '/'.
|
||||
#
|
||||
# Default: '/'
|
||||
# Values: '/', '/dev/sdXX', '/path/to/drive'.
|
||||
# Flag: --disk_show
|
||||
#
|
||||
# Example:
|
||||
# disk_show=('/' '/dev/sdb1'):
|
||||
# 'Disk (/): 74G / 118G (66%)'
|
||||
# 'Disk (/mnt/Videos): 823G / 893G (93%)'
|
||||
#
|
||||
# disk_show=('/'):
|
||||
# 'Disk (/): 74G / 118G (66%)'
|
||||
#
|
||||
disk_show=('/')
|
||||
|
||||
# Disk subtitle.
|
||||
# What to append to the Disk subtitle.
|
||||
#
|
||||
# Default: 'mount'
|
||||
# Values: 'mount', 'name', 'dir', 'none'
|
||||
# Flag: --disk_subtitle
|
||||
#
|
||||
# Example:
|
||||
# name: 'Disk (/dev/sda1): 74G / 118G (66%)'
|
||||
# 'Disk (/dev/sdb2): 74G / 118G (66%)'
|
||||
#
|
||||
# mount: 'Disk (/): 74G / 118G (66%)'
|
||||
# 'Disk (/mnt/Local Disk): 74G / 118G (66%)'
|
||||
# 'Disk (/mnt/Videos): 74G / 118G (66%)'
|
||||
#
|
||||
# dir: 'Disk (/): 74G / 118G (66%)'
|
||||
# 'Disk (Local Disk): 74G / 118G (66%)'
|
||||
# 'Disk (Videos): 74G / 118G (66%)'
|
||||
#
|
||||
# none: 'Disk: 74G / 118G (66%)'
|
||||
# 'Disk: 74G / 118G (66%)'
|
||||
# 'Disk: 74G / 118G (66%)'
|
||||
disk_subtitle="mount"
|
||||
|
||||
# Disk percent.
|
||||
# Show/Hide disk percent.
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --disk_percent
|
||||
#
|
||||
# Example:
|
||||
# on: 'Disk (/): 74G / 118G (66%)'
|
||||
# off: 'Disk (/): 74G / 118G'
|
||||
disk_percent="on"
|
||||
|
||||
|
||||
# Song
|
||||
|
||||
|
||||
# Manually specify a music player.
|
||||
#
|
||||
# Default: 'auto'
|
||||
# Values: 'auto', 'player-name'
|
||||
# Flag: --music_player
|
||||
#
|
||||
# Available values for 'player-name':
|
||||
#
|
||||
# amarok
|
||||
# audacious
|
||||
# banshee
|
||||
# bluemindo
|
||||
# clementine
|
||||
# cmus
|
||||
# deadbeef
|
||||
# deepin-music
|
||||
# dragon
|
||||
# elisa
|
||||
# exaile
|
||||
# gnome-music
|
||||
# gmusicbrowser
|
||||
# gogglesmm
|
||||
# guayadeque
|
||||
# io.elementary.music
|
||||
# iTunes
|
||||
# juk
|
||||
# lollypop
|
||||
# mocp
|
||||
# mopidy
|
||||
# mpd
|
||||
# muine
|
||||
# netease-cloud-music
|
||||
# olivia
|
||||
# playerctl
|
||||
# pogo
|
||||
# pragha
|
||||
# qmmp
|
||||
# quodlibet
|
||||
# rhythmbox
|
||||
# sayonara
|
||||
# smplayer
|
||||
# spotify
|
||||
# strawberry
|
||||
# tauonmb
|
||||
# tomahawk
|
||||
# vlc
|
||||
# xmms2d
|
||||
# xnoise
|
||||
# yarock
|
||||
music_player="auto"
|
||||
|
||||
# Format to display song information.
|
||||
#
|
||||
# Default: '%artist% - %album% - %title%'
|
||||
# Values: '%artist%', '%album%', '%title%'
|
||||
# Flag: --song_format
|
||||
#
|
||||
# Example:
|
||||
# default: 'Song: Jet - Get Born - Sgt Major'
|
||||
song_format="%artist% - %album% - %title%"
|
||||
|
||||
# Print the Artist, Album and Title on separate lines
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --song_shorthand
|
||||
#
|
||||
# Example:
|
||||
# on: 'Artist: The Fratellis'
|
||||
# 'Album: Costello Music'
|
||||
# 'Song: Chelsea Dagger'
|
||||
#
|
||||
# off: 'Song: The Fratellis - Costello Music - Chelsea Dagger'
|
||||
song_shorthand="off"
|
||||
|
||||
# 'mpc' arguments (specify a host, password etc).
|
||||
#
|
||||
# Default: ''
|
||||
# Example: mpc_args=(-h HOST -P PASSWORD)
|
||||
mpc_args=()
|
||||
|
||||
|
||||
# Text Colors
|
||||
|
||||
|
||||
# Text Colors
|
||||
#
|
||||
# Default: 'distro'
|
||||
# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
|
||||
# Flag: --colors
|
||||
#
|
||||
# Each number represents a different part of the text in
|
||||
# this order: 'title', '@', 'underline', 'subtitle', 'colon', 'info'
|
||||
#
|
||||
# Example:
|
||||
# colors=(distro) - Text is colored based on Distro colors.
|
||||
# colors=(4 6 1 8 8 6) - Text is colored in the order above.
|
||||
colors=(distro)
|
||||
|
||||
|
||||
# Text Options
|
||||
|
||||
|
||||
# Toggle bold text
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --bold
|
||||
bold="on"
|
||||
|
||||
# Enable/Disable Underline
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --underline
|
||||
underline_enabled="on"
|
||||
|
||||
# Underline character
|
||||
#
|
||||
# Default: '-'
|
||||
# Values: 'string'
|
||||
# Flag: --underline_char
|
||||
underline_char="-"
|
||||
|
||||
|
||||
# Info Separator
|
||||
# Replace the default separator with the specified string.
|
||||
#
|
||||
# Default: ':'
|
||||
# Flag: --separator
|
||||
#
|
||||
# Example:
|
||||
# separator="->": 'Shell-> bash'
|
||||
# separator=" =": 'WM = dwm'
|
||||
separator=":"
|
||||
|
||||
|
||||
# Color Blocks
|
||||
|
||||
|
||||
# Color block range
|
||||
# The range of colors to print.
|
||||
#
|
||||
# Default: '0', '15'
|
||||
# Values: 'num'
|
||||
# Flag: --block_range
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# Display colors 0-7 in the blocks. (8 colors)
|
||||
# neofetch --block_range 0 7
|
||||
#
|
||||
# Display colors 0-15 in the blocks. (16 colors)
|
||||
# neofetch --block_range 0 15
|
||||
block_range=(0 15)
|
||||
|
||||
# Toggle color blocks
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --color_blocks
|
||||
color_blocks="on"
|
||||
|
||||
# Color block width in spaces
|
||||
#
|
||||
# Default: '3'
|
||||
# Values: 'num'
|
||||
# Flag: --block_width
|
||||
block_width=3
|
||||
|
||||
# Color block height in lines
|
||||
#
|
||||
# Default: '1'
|
||||
# Values: 'num'
|
||||
# Flag: --block_height
|
||||
block_height=1
|
||||
|
||||
# Color Alignment
|
||||
#
|
||||
# Default: 'auto'
|
||||
# Values: 'auto', 'num'
|
||||
# Flag: --col_offset
|
||||
#
|
||||
# Number specifies how far from the left side of the terminal (in spaces) to
|
||||
# begin printing the columns, in case you want to e.g. center them under your
|
||||
# text.
|
||||
# Example:
|
||||
# col_offset="auto" - Default behavior of neofetch
|
||||
# col_offset=7 - Leave 7 spaces then print the colors
|
||||
col_offset="auto"
|
||||
|
||||
# Progress Bars
|
||||
|
||||
|
||||
# Bar characters
|
||||
#
|
||||
# Default: '-', '='
|
||||
# Values: 'string', 'string'
|
||||
# Flag: --bar_char
|
||||
#
|
||||
# Example:
|
||||
# neofetch --bar_char 'elapsed' 'total'
|
||||
# neofetch --bar_char '-' '='
|
||||
bar_char_elapsed="-"
|
||||
bar_char_total="="
|
||||
|
||||
# Toggle Bar border
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --bar_border
|
||||
bar_border="on"
|
||||
|
||||
# Progress bar length in spaces
|
||||
# Number of chars long to make the progress bars.
|
||||
#
|
||||
# Default: '15'
|
||||
# Values: 'num'
|
||||
# Flag: --bar_length
|
||||
bar_length=15
|
||||
|
||||
# Progress bar colors
|
||||
# When set to distro, uses your distro's logo colors.
|
||||
#
|
||||
# Default: 'distro', 'distro'
|
||||
# Values: 'distro', 'num'
|
||||
# Flag: --bar_colors
|
||||
#
|
||||
# Example:
|
||||
# neofetch --bar_colors 3 4
|
||||
# neofetch --bar_colors distro 5
|
||||
bar_color_elapsed="distro"
|
||||
bar_color_total="distro"
|
||||
|
||||
|
||||
# Info display
|
||||
# Display a bar with the info.
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'bar', 'infobar', 'barinfo', 'off'
|
||||
# Flags: --cpu_display
|
||||
# --memory_display
|
||||
# --battery_display
|
||||
# --disk_display
|
||||
#
|
||||
# Example:
|
||||
# bar: '[---=======]'
|
||||
# infobar: 'info [---=======]'
|
||||
# barinfo: '[---=======] info'
|
||||
# off: 'info'
|
||||
cpu_display="off"
|
||||
memory_display="off"
|
||||
battery_display="off"
|
||||
disk_display="off"
|
||||
|
||||
|
||||
# Backend Settings
|
||||
|
||||
|
||||
# Image backend.
|
||||
#
|
||||
# Default: 'ascii'
|
||||
# Values: 'ascii', 'caca', 'chafa', 'jp2a', 'iterm2', 'off',
|
||||
# 'pot', 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty'
|
||||
# Flag: --backend
|
||||
image_backend="ascii"
|
||||
|
||||
# Image Source
|
||||
#
|
||||
# Which image or ascii file to display.
|
||||
#
|
||||
# Default: 'auto'
|
||||
# Values: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/'
|
||||
# 'command output (neofetch --ascii "$(fortune | cowsay -W 30)")'
|
||||
# Flag: --source
|
||||
#
|
||||
# NOTE: 'auto' will pick the best image source for whatever image backend is used.
|
||||
# In ascii mode, distro ascii art will be used and in an image mode, your
|
||||
# wallpaper will be used.
|
||||
image_source="auto"
|
||||
|
||||
|
||||
# Ascii Options
|
||||
|
||||
|
||||
# Ascii distro
|
||||
# Which distro's ascii art to display.
|
||||
#
|
||||
# Default: 'auto'
|
||||
# Values: 'auto', 'distro_name'
|
||||
# Flag: --ascii_distro
|
||||
# NOTE: AIX, Alpine, Anarchy, Android, Antergos, antiX, "AOSC OS",
|
||||
# "AOSC OS/Retro", Apricity, ArcoLinux, ArchBox, ARCHlabs,
|
||||
# ArchStrike, XFerience, ArchMerge, Arch, Artix, Arya, Bedrock,
|
||||
# Bitrig, BlackArch, BLAG, BlankOn, BlueLight, bonsai, BSD,
|
||||
# BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS,
|
||||
# Chapeau, Chrom*, Cleanjaro, ClearOS, Clear_Linux, Clover,
|
||||
# Condres, Container_Linux, CRUX, Cucumber, Debian, Deepin,
|
||||
# DesaOS, Devuan, DracOS, DarkOs, DragonFly, Drauger, Elementary,
|
||||
# EndeavourOS, Endless, EuroLinux, Exherbo, Fedora, Feren, FreeBSD,
|
||||
# FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Pentoo,
|
||||
# gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra,
|
||||
# Hyperbola, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion,
|
||||
# Korora, KSLinux, Kubuntu, LEDE, LFS, Linux_Lite,
|
||||
# LMDE, Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva,
|
||||
# Manjaro, Maui, Mer, Minix, LinuxMint, MX_Linux, Namib,
|
||||
# Neptune, NetBSD, Netrunner, Nitrux, NixOS, Nurunner,
|
||||
# NuTyX, OBRevenge, OpenBSD, openEuler, OpenIndiana, openmamba,
|
||||
# OpenMandriva, OpenStage, OpenWrt, osmc, Oracle, OS Elbrus, PacBSD,
|
||||
# Parabola, Pardus, Parrot, Parsix, TrueOS, PCLinuxOS, Peppermint,
|
||||
# popos, Porteus, PostMarketOS, Proxmox, Puppy, PureOS, Qubes, Radix,
|
||||
# Raspbian, Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan,
|
||||
# Regata, Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific,
|
||||
# Septor, SereneLinux, SharkLinux, Siduction, Slackware, SliTaz,
|
||||
# SmartOS, Solus, Source_Mage, Sparky, Star, SteamOS, SunOS,
|
||||
# openSUSE_Leap, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails,
|
||||
# Trisquel, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE, Ubuntu-Studio,
|
||||
# Ubuntu, Venom, Void, Obarun, windows10, Windows7, Xubuntu, Zorin,
|
||||
# and IRIX have ascii logos
|
||||
# NOTE: Arch, Ubuntu, Redhat, and Dragonfly have 'old' logo variants.
|
||||
# Use '{distro name}_old' to use the old logos.
|
||||
# NOTE: Ubuntu has flavor variants.
|
||||
# Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu-GNOME,
|
||||
# Ubuntu-Studio, Ubuntu-Mate or Ubuntu-Budgie to use the flavors.
|
||||
# NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu,
|
||||
# CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android,
|
||||
# Antrix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola,
|
||||
# Manjaro, MXLinux, NetBSD, Parabola, POP_OS, PureOS,
|
||||
# Slackware, SunOS, LinuxLite, OpenSUSE, Raspbian,
|
||||
# postmarketOS, and Void have a smaller logo variant.
|
||||
# Use '{distro name}_small' to use the small variants.
|
||||
ascii_distro="auto"
|
||||
|
||||
# Ascii Colors
|
||||
#
|
||||
# Default: 'distro'
|
||||
# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
|
||||
# Flag: --ascii_colors
|
||||
#
|
||||
# Example:
|
||||
# ascii_colors=(distro) - Ascii is colored based on Distro colors.
|
||||
# ascii_colors=(4 6 1 8 8 6) - Ascii is colored using these colors.
|
||||
ascii_colors=(distro)
|
||||
|
||||
# Bold ascii logo
|
||||
# Whether or not to bold the ascii logo.
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --ascii_bold
|
||||
ascii_bold="on"
|
||||
|
||||
|
||||
# Image Options
|
||||
|
||||
|
||||
# Image loop
|
||||
# Setting this to on will make neofetch redraw the image constantly until
|
||||
# Ctrl+C is pressed. This fixes display issues in some terminal emulators.
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --loop
|
||||
image_loop="off"
|
||||
|
||||
# Thumbnail directory
|
||||
#
|
||||
# Default: '~/.cache/thumbnails/neofetch'
|
||||
# Values: 'dir'
|
||||
thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch"
|
||||
|
||||
# Crop mode
|
||||
#
|
||||
# Default: 'normal'
|
||||
# Values: 'normal', 'fit', 'fill'
|
||||
# Flag: --crop_mode
|
||||
#
|
||||
# See this wiki page to learn about the fit and fill options.
|
||||
# https://github.com/dylanaraps/neofetch/wiki/What-is-Waifu-Crop%3F
|
||||
crop_mode="normal"
|
||||
|
||||
# Crop offset
|
||||
# Note: Only affects 'normal' crop mode.
|
||||
#
|
||||
# Default: 'center'
|
||||
# Values: 'northwest', 'north', 'northeast', 'west', 'center'
|
||||
# 'east', 'southwest', 'south', 'southeast'
|
||||
# Flag: --crop_offset
|
||||
crop_offset="center"
|
||||
|
||||
# Image size
|
||||
# The image is half the terminal width by default.
|
||||
#
|
||||
# Default: 'auto'
|
||||
# Values: 'auto', '00px', '00%', 'none'
|
||||
# Flags: --image_size
|
||||
# --size
|
||||
image_size="auto"
|
||||
|
||||
# Gap between image and text
|
||||
#
|
||||
# Default: '3'
|
||||
# Values: 'num', '-num'
|
||||
# Flag: --gap
|
||||
gap=3
|
||||
|
||||
# Image offsets
|
||||
# Only works with the w3m backend.
|
||||
#
|
||||
# Default: '0'
|
||||
# Values: 'px'
|
||||
# Flags: --xoffset
|
||||
# --yoffset
|
||||
yoffset=0
|
||||
xoffset=0
|
||||
|
||||
# Image background color
|
||||
# Only works with the w3m backend.
|
||||
#
|
||||
# Default: ''
|
||||
# Values: 'color', 'blue'
|
||||
# Flag: --bg_color
|
||||
background_color=
|
||||
|
||||
|
||||
# Misc Options
|
||||
|
||||
# Stdout mode
|
||||
# Turn off all colors and disables image backend (ASCII/Image).
|
||||
# Useful for piping into another command.
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
stdout="off"
|
||||
28
.config/nvim/init.vim
Normal file
28
.config/nvim/init.vim
Normal file
@@ -0,0 +1,28 @@
|
||||
set number
|
||||
syntax on
|
||||
set expandtab shiftwidth=4 tabstop=4
|
||||
set autoindent
|
||||
set clipboard=unnamedplus
|
||||
|
||||
" I want nvim using a venv for plugins and stuff
|
||||
let g:python3_host_prog = expand('~/.venvs/nvim/bin/python')
|
||||
|
||||
" Plugins with vim-plug
|
||||
call plug#begin('~/.vim/plugged')
|
||||
|
||||
Plug 'psf/black', { 'do': ':!pip install black' }
|
||||
Plug 'dense-analysis/ale' " For linting and format-on-save
|
||||
Plug 'vim-python/python-syntax' " Improved Python syntax highlighting
|
||||
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } " Fuzzy finder
|
||||
Plug 'junegunn/fzf.vim'
|
||||
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} " Better syntax
|
||||
|
||||
call plug#end()
|
||||
|
||||
" Enable ALE for linting and formatting
|
||||
let g:ale_fix_on_save = 1
|
||||
let g:ale_linters = { 'python': ['flake8'] }
|
||||
let g:ale_fixers = { 'python': ['black'] }
|
||||
|
||||
" Keybindings
|
||||
nnoremap <leader>f :Files<CR> " Fuzzy file search
|
||||
2
.config/plasma-workspace/latex.sh
Executable file
2
.config/plasma-workspace/latex.sh
Executable file
@@ -0,0 +1,2 @@
|
||||
# LaTeX Import path
|
||||
export TEXINPUTS=/home/joe/College/SNHU/LaTeX:$(kpsepath tex | tr ':' '\n' | head -n 1):
|
||||
14
.config/uwufetch/config
Normal file
14
.config/uwufetch/config
Normal file
@@ -0,0 +1,14 @@
|
||||
#distro=manjaro
|
||||
#image=“/usr/lib/uwufetch/manjaro.png”
|
||||
ascii=true
|
||||
user=true
|
||||
os=true
|
||||
kernel=true
|
||||
cpu=true
|
||||
gpu=true
|
||||
ram=true
|
||||
resolution=true
|
||||
shell=true
|
||||
pkgs=true
|
||||
uptime=true
|
||||
colors=true
|
||||
36
.gitconfig
Normal file
36
.gitconfig
Normal file
@@ -0,0 +1,36 @@
|
||||
[user]
|
||||
email = joe@kitsunehosting.net
|
||||
name = KenwoodFox
|
||||
signingkey = DD5E787D6C678F3F64
|
||||
[alias]
|
||||
add-commit = !git add -A && git commit
|
||||
report = log --author=J --since='2 sunday ago' --until='1 sunday ago' --format='%Cgreen%ci%Creset %s%Creset' --no-merges
|
||||
report-csv = log --author=Marco --since='2 sunday ago' --until='1 sunday ago' --format='\"%ci\",\"%s\"' --no-merges
|
||||
lg1 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
|
||||
lg2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all
|
||||
lg = !"git lg1"
|
||||
[credential]
|
||||
helper = store
|
||||
[global]
|
||||
[push]
|
||||
default = current
|
||||
autoSetupRemote = true
|
||||
[init]
|
||||
defaultBranch = main
|
||||
[pull]
|
||||
rebase = false
|
||||
[branch]
|
||||
autosetuprebase = always
|
||||
[safe]
|
||||
directory = /opt/flutter
|
||||
[protocol "file"]
|
||||
allow = always
|
||||
[filter "lfs"]
|
||||
required = true
|
||||
clean = git-lfs clean -- %f
|
||||
smudge = git-lfs smudge -- %f
|
||||
process = git-lfs filter-process
|
||||
[diff "fcinfo"]
|
||||
textconv = ~/.local/bin/fcinfo
|
||||
[core]
|
||||
hooksPath = /home/joe/.githooks
|
||||
44
.githooks/pre-commit
Executable file
44
.githooks/pre-commit
Executable file
@@ -0,0 +1,44 @@
|
||||
#!/bin/sh
|
||||
# Global pre-commit hook: print effective identity and ask to continue.
|
||||
# Set BYPASS_COMMIT_IDENTITY_CHECK=1 to skip (e.g., in CI).
|
||||
|
||||
[ -n "$BYPASS_COMMIT_IDENTITY_CHECK" ] && exit 0
|
||||
|
||||
# Resolve effective identity (prefer repo-local config, fall back to global)
|
||||
name="$(git config --get user.name)"
|
||||
[ -z "$name" ] && name="$(git config --global --get user.name)"
|
||||
email="$(git config --get user.email)"
|
||||
[ -z "$email" ] && email="$(git config --global --get user.email)"
|
||||
|
||||
branch="$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo '?')"
|
||||
remote="$(git remote -v | awk '/\(push\)/{print $2; exit}' | sed 's#^https\?://##; s#git@##' )"
|
||||
|
||||
# Optional: block specific identities unless overridden
|
||||
# Add your alt(s) here, comma-separated (exact match on email or name).
|
||||
BLOCKED_EMAILS="${BLOCKED_EMAILS:-alt@example.com}"
|
||||
BLOCKED_NAMES="${BLOCKED_NAMES:-Alt Name}"
|
||||
|
||||
is_blocked() {
|
||||
needle="$1" haystack="$2"
|
||||
printf '%s' "$haystack" | tr ',' '\n' | grep -Fxq "$needle"
|
||||
}
|
||||
|
||||
printf '\n\033[1;33m⚠ Committing as:\033[0m \033[1m%s\033[0m <\033[1m%s\033[0m>\n' "$name" "$email"
|
||||
[ -n "$branch" ] && printf ' Branch: %s\n' "$branch"
|
||||
[ -n "$remote" ] && printf ' Remote: %s\n' "$remote"
|
||||
printf ' Double-check this is the right account.\n\n'
|
||||
|
||||
if is_blocked "$email" "$BLOCKED_EMAILS" || is_blocked "$name" "$BLOCKED_NAMES"; then
|
||||
printf '\033[1;31mBlocked identity detected.\033[0m Set BYPASS_COMMIT_IDENTITY_CHECK=1 to override just this commit.\n'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Interactive confirm (skip if no TTY, e.g., merge drivers)
|
||||
if [ -t 0 ]; then
|
||||
printf 'Continue with commit? [y/N] '
|
||||
read ans
|
||||
case "$ans" in
|
||||
y|Y) ;;
|
||||
*) echo "Commit aborted."; exit 1 ;;
|
||||
esac
|
||||
fi
|
||||
187
.local/bin/computer
Executable file
187
.local/bin/computer
Executable file
@@ -0,0 +1,187 @@
|
||||
#!/usr/bin/env python3
|
||||
# Joe wrote this :P
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
import urllib.error
|
||||
import urllib.request
|
||||
|
||||
try:
|
||||
from rich.console import Console
|
||||
from rich.markdown import Markdown
|
||||
|
||||
RICH = True
|
||||
except ImportError:
|
||||
RICH = False
|
||||
|
||||
FAST_MODEL = "gemma3:4b"
|
||||
THINK_MODEL = "qwen3:4b"
|
||||
|
||||
ANSI_ESCAPE = re.compile(r"\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])")
|
||||
|
||||
SYSTEM_PROMPT = """
|
||||
You are Computer.
|
||||
|
||||
Rules:
|
||||
- Respond in under 100 words unless asked for detail.
|
||||
- Prefer direct answers.
|
||||
- Use technical language.
|
||||
- Do not apologize.
|
||||
- For Linux questions assume Arch Linux.
|
||||
- For electronics questions assume the user is an engineer.
|
||||
- If providing a command, put the command first.
|
||||
- Do not explain your reasoning unless explicitly asked.
|
||||
- Do not show chain-of-thought.
|
||||
- Give final answers only.
|
||||
""".strip()
|
||||
|
||||
|
||||
def ollama_base_url():
|
||||
host = os.environ.get("OLLAMA_HOST", "127.0.0.1:11434").strip()
|
||||
if host.startswith(("http://", "https://")):
|
||||
return host.rstrip("/")
|
||||
return f"http://{host}".rstrip("/")
|
||||
|
||||
|
||||
def strip_ansi(text):
|
||||
return ANSI_ESCAPE.sub("", text)
|
||||
|
||||
|
||||
def copy_to_clipboard(text):
|
||||
commands = [
|
||||
["wl-copy"],
|
||||
["xclip", "-selection", "clipboard"],
|
||||
["xsel", "--clipboard", "--input"],
|
||||
]
|
||||
|
||||
for cmd in commands:
|
||||
try:
|
||||
subprocess.run(
|
||||
cmd,
|
||||
input=text,
|
||||
text=True,
|
||||
stdout=subprocess.DEVNULL,
|
||||
stderr=subprocess.DEVNULL,
|
||||
check=True,
|
||||
)
|
||||
return True
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
return False
|
||||
|
||||
|
||||
def run_ollama_api(model, prompt):
|
||||
url = f"{ollama_base_url()}/api/generate"
|
||||
payload = json.dumps(
|
||||
{
|
||||
"model": model,
|
||||
"prompt": prompt,
|
||||
"stream": False,
|
||||
}
|
||||
).encode()
|
||||
|
||||
req = urllib.request.Request(
|
||||
url,
|
||||
data=payload,
|
||||
headers={"Content-Type": "application/json"},
|
||||
method="POST",
|
||||
)
|
||||
|
||||
with urllib.request.urlopen(req, timeout=600) as resp:
|
||||
data = json.load(resp)
|
||||
|
||||
return strip_ansi(data.get("response", "")).strip()
|
||||
|
||||
|
||||
def run_ollama_cli(model, prompt):
|
||||
result = subprocess.run(
|
||||
["ollama", "run", model, prompt],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
)
|
||||
if result.returncode != 0:
|
||||
err = (result.stderr or result.stdout or "ollama run failed").strip()
|
||||
raise RuntimeError(err)
|
||||
return strip_ansi(result.stdout).strip()
|
||||
|
||||
|
||||
def run_ollama(model, prompt):
|
||||
try:
|
||||
return run_ollama_api(model, prompt)
|
||||
except (urllib.error.URLError, TimeoutError, json.JSONDecodeError) as exc:
|
||||
print(f"computer: API unavailable ({exc}), using CLI", file=sys.stderr)
|
||||
return run_ollama_cli(model, prompt)
|
||||
|
||||
|
||||
def print_response(response, raw):
|
||||
if RICH and not raw:
|
||||
console = Console()
|
||||
console.print(Markdown(response))
|
||||
else:
|
||||
print(response)
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
prog="computer",
|
||||
description="Tiny local terminal AI",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--think",
|
||||
action="store_true",
|
||||
help="Use the larger reasoning model",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--copy",
|
||||
action="store_true",
|
||||
help="Copy response to clipboard",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--raw",
|
||||
action="store_true",
|
||||
help="Disable rich formatting",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"prompt",
|
||||
nargs="*",
|
||||
help="Prompt text",
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
model = THINK_MODEL if args.think else FAST_MODEL
|
||||
|
||||
user_prompt = " ".join(args.prompt)
|
||||
|
||||
stdin_text = ""
|
||||
if not sys.stdin.isatty():
|
||||
stdin_text = sys.stdin.read()
|
||||
|
||||
prompt = f"{SYSTEM_PROMPT}\n\nUser:\n{user_prompt}"
|
||||
|
||||
if stdin_text.strip():
|
||||
prompt += f"\n\nInput:\n{stdin_text}"
|
||||
|
||||
try:
|
||||
response = run_ollama(model, prompt)
|
||||
except RuntimeError as exc:
|
||||
print(f"computer: {exc}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
if args.copy:
|
||||
copy_to_clipboard(response)
|
||||
|
||||
print_response(response, args.raw)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
8
.local/bin/describe
Executable file
8
.local/bin/describe
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Just to make it easy to always get the same
|
||||
# version description,
|
||||
|
||||
# Usage:
|
||||
# ./describe.sh
|
||||
git describe --abbrev=8 --always --tags
|
||||
82
.local/bin/discompress
Executable file
82
.local/bin/discompress
Executable file
@@ -0,0 +1,82 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Re-encode a video to a target size in MB.
|
||||
# Example:
|
||||
# ./this_script.sh video.mp4 15
|
||||
|
||||
T_SIZE="$2" # target size in MB
|
||||
T_FILE="${1%.*}-$2MB.mp4" # filename out
|
||||
|
||||
# Original duration in seconds
|
||||
O_DUR=$(\
|
||||
ffprobe \
|
||||
-v error \
|
||||
-show_entries format=duration \
|
||||
-of csv=p=0 "$1")
|
||||
|
||||
# Original audio rate
|
||||
O_ARATE=$(\
|
||||
ffprobe \
|
||||
-v error \
|
||||
-select_streams a:0 \
|
||||
-show_entries stream=bit_rate \
|
||||
-of csv=p=0 "$1")
|
||||
|
||||
# Original audio rate in KiB/s
|
||||
O_ARATE=$(\
|
||||
awk \
|
||||
-v arate="$O_ARATE" \
|
||||
'BEGIN { printf "%.0f", (arate / 1024) }')
|
||||
|
||||
# Target size is required to be less than the size of the original audio stream
|
||||
T_MINSIZE=$(\
|
||||
awk \
|
||||
-v arate="$O_ARATE" \
|
||||
-v duration="$O_DUR" \
|
||||
'BEGIN { printf "%.2f", ( (arate * duration) / 8192 ) }')
|
||||
|
||||
# Equals 1 if target size is ok, 0 otherwise
|
||||
IS_MINSIZE=$(\
|
||||
awk \
|
||||
-v size="$T_SIZE" \
|
||||
-v minsize="$T_MINSIZE" \
|
||||
'BEGIN { print (minsize < size) }')
|
||||
|
||||
# Give useful information if size is too small
|
||||
if [[ $IS_MINSIZE -eq 0 ]]; then
|
||||
printf "%s\n" "Target size ${T_SIZE}MB is too small!" >&2
|
||||
printf "%s %s\n" "Try values larger than" "${T_MINSIZE}MB" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Set target audio bitrate
|
||||
T_ARATE=$O_ARATE
|
||||
|
||||
|
||||
# Calculate target video rate - MB -> KiB/s
|
||||
T_VRATE=$(\
|
||||
awk \
|
||||
-v size="$T_SIZE" \
|
||||
-v duration="$O_DUR" \
|
||||
-v audio_rate="$O_ARATE" \
|
||||
'BEGIN { print ( ( size * 8192.0 ) / ( 1.048576 * duration ) - audio_rate) }')
|
||||
|
||||
# Perform the conversion
|
||||
ffmpeg \
|
||||
-y \
|
||||
-i "$1" \
|
||||
-c:v libx264 \
|
||||
-b:v "$T_VRATE"k \
|
||||
-pass 1 \
|
||||
-an \
|
||||
-f mp4 \
|
||||
/dev/null \
|
||||
&& \
|
||||
ffmpeg \
|
||||
-i "$1" \
|
||||
-c:v libx264 \
|
||||
-b:v "$T_VRATE"k \
|
||||
-pass 2 \
|
||||
-c:a aac \
|
||||
-b:a "$T_ARATE"k \
|
||||
$T_FILE
|
||||
293
.local/bin/fcinfo
Executable file
293
.local/bin/fcinfo
Executable file
@@ -0,0 +1,293 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
# -*- coding: utf8 -*-
|
||||
|
||||
# ***************************************************************************
|
||||
# * *
|
||||
# * Copyright (c) 2015 Yorik van Havre <yorik@uncreated.net> *
|
||||
# * *
|
||||
# * This program is free software; you can redistribute it and/or modify *
|
||||
# * it under the terms of the GNU Lesser General Public License (LGPL) *
|
||||
# * as published by the Free Software Foundation; either version 2 of *
|
||||
# * the License, or (at your option) any later version. *
|
||||
# * for detail see the LICENCE text file. *
|
||||
# * *
|
||||
# * This program is distributed in the hope that it will be useful, *
|
||||
# * but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
# * GNU Library General Public License for more details. *
|
||||
# * *
|
||||
# * You should have received a copy of the GNU Library General Public *
|
||||
# * License along with this program; if not, write to the Free Software *
|
||||
# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
||||
# * USA *
|
||||
# * *
|
||||
# ***************************************************************************
|
||||
|
||||
__title__ = "FreeCAD File info utility"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = ["http://www.freecad.org"]
|
||||
__doc__ = """
|
||||
This utility prints information about a given FreeCAD file (*.FCStd)
|
||||
on screen, including document properties, number of included objects,
|
||||
object sizes and properties and values. Its main use is to compare
|
||||
two files and be able to see the differences in a text-based form.
|
||||
|
||||
If no option is used, fcinfo prints the document properties and a list
|
||||
of properties of each object found in the given file.
|
||||
|
||||
Usage:
|
||||
|
||||
fcinfo [options] myfile.FCStd
|
||||
|
||||
Options:
|
||||
|
||||
-h, --help: Prints this help text
|
||||
-s, --short: Do not print object properties. Only one line
|
||||
per object is printed, including its size and SHA1.
|
||||
This is sufficient to see that an object has
|
||||
changed, but not what exactly has changed.
|
||||
-vs --veryshort: Only prints the document info, not objects info.
|
||||
This is sufficient to see if a file has changed, as
|
||||
its SHA1 code and timestamp will show it. But won't
|
||||
show details of what has changed.
|
||||
-g --gui: Adds visual properties too (if not using -s or -vs)
|
||||
|
||||
Git usage:
|
||||
|
||||
This script can be used as a textconv tool for git diff by
|
||||
configuring your git folder as follows:
|
||||
|
||||
1) add to .gitattributes (or ~/.gitattributes for user-wide):
|
||||
|
||||
*.fcstd diff=fcinfo
|
||||
|
||||
2) add to .git/config (or ~/.gitconfig for user-wide):
|
||||
|
||||
[diff "fcinfo"]
|
||||
textconv = /path/to/fcinfo
|
||||
|
||||
With this, when committing a .FCStd file with Git,
|
||||
'git diff' will show you the difference between the two
|
||||
texts obtained by fcinfo
|
||||
"""
|
||||
|
||||
|
||||
import sys
|
||||
import zipfile
|
||||
import xml.sax
|
||||
import os
|
||||
import hashlib
|
||||
import re
|
||||
|
||||
|
||||
class FreeCADFileHandler(xml.sax.ContentHandler):
|
||||
def __init__(self, zfile, short=0): # short: 0=normal, 1=short, 2=veryshort
|
||||
|
||||
xml.sax.ContentHandler.__init__(self)
|
||||
self.zfile = zfile
|
||||
self.obj = None
|
||||
self.prop = None
|
||||
self.count = "0"
|
||||
self.contents = {}
|
||||
self.short = short
|
||||
|
||||
def startElement(self, tag, attributes):
|
||||
|
||||
if tag == "Document":
|
||||
self.obj = tag
|
||||
self.contents = {}
|
||||
self.contents["ProgramVersion"] = attributes["ProgramVersion"]
|
||||
self.contents["FileVersion"] = attributes["FileVersion"]
|
||||
|
||||
elif tag == "Object":
|
||||
if "name" in attributes:
|
||||
name = self.clean(attributes["name"])
|
||||
self.obj = name
|
||||
if "type" in attributes:
|
||||
self.contents[name] = attributes["type"]
|
||||
|
||||
elif tag == "ViewProvider":
|
||||
if "name" in attributes:
|
||||
self.obj = self.clean(attributes["name"])
|
||||
|
||||
elif tag == "Part":
|
||||
if self.obj:
|
||||
r = self.zfile.read(attributes["file"])
|
||||
s = r.__sizeof__()
|
||||
if s < 1024:
|
||||
s = str(s) + "B"
|
||||
elif s > 1048576:
|
||||
s = str(s / 1048576) + "M"
|
||||
else:
|
||||
s = str(s / 1024) + "K"
|
||||
s += " " + str(hashlib.sha1(r).hexdigest()[:12])
|
||||
self.contents[self.obj] += " (" + s + ")"
|
||||
|
||||
elif tag == "Property":
|
||||
self.prop = None
|
||||
# skip "internal" properties, useless for a diff
|
||||
if attributes["name"] not in [
|
||||
"Symbol",
|
||||
"AttacherType",
|
||||
"MapMode",
|
||||
"MapPathParameter",
|
||||
"MapReversed",
|
||||
"AttachmentOffset",
|
||||
"SelectionStyle",
|
||||
"TightGrid",
|
||||
"GridSize",
|
||||
"GridSnap",
|
||||
"GridStyle",
|
||||
"Lighting",
|
||||
"Deviation",
|
||||
"AngularDeflection",
|
||||
"BoundingBox",
|
||||
"Selectable",
|
||||
"ShowGrid",
|
||||
]:
|
||||
self.prop = attributes["name"]
|
||||
|
||||
elif tag in ["String", "Uuid", "Float", "Integer", "Bool", "Link"]:
|
||||
if self.prop and ("value" in attributes):
|
||||
if self.obj == "Document":
|
||||
self.contents[self.prop] = attributes["value"]
|
||||
elif self.short == 0:
|
||||
if tag == "Float":
|
||||
self.contents[self.obj + "00000000::" + self.prop] = str(
|
||||
float(attributes["value"])
|
||||
)
|
||||
else:
|
||||
self.contents[self.obj + "00000000::" + self.prop] = attributes["value"]
|
||||
|
||||
elif tag in ["PropertyVector"]:
|
||||
if self.prop and self.obj and (self.short == 0):
|
||||
val = (
|
||||
"("
|
||||
+ str(float(attributes["valueX"]))
|
||||
+ ","
|
||||
+ str(float(attributes["valueY"]))
|
||||
+ ","
|
||||
+ str(float(attributes["valueZ"]))
|
||||
+ ")"
|
||||
)
|
||||
self.contents[self.obj + "00000000::" + self.prop] = val
|
||||
|
||||
elif tag in ["PropertyPlacement"]:
|
||||
if self.prop and self.obj and (self.short == 0):
|
||||
val = (
|
||||
"("
|
||||
+ str(float(attributes["Px"]))
|
||||
+ ","
|
||||
+ str(float(attributes["Py"]))
|
||||
+ ","
|
||||
+ str(float(attributes["Pz"]))
|
||||
+ ")"
|
||||
)
|
||||
val += (
|
||||
" ("
|
||||
+ str(round(float(attributes["Q0"]), 4))
|
||||
+ ","
|
||||
+ str(round(float(attributes["Q1"]), 4))
|
||||
+ ","
|
||||
)
|
||||
val += (
|
||||
str(round(float(attributes["Q2"]), 4))
|
||||
+ ","
|
||||
+ str(round(float(attributes["Q3"]), 4))
|
||||
+ ")"
|
||||
)
|
||||
self.contents[self.obj + "00000000::" + self.prop] = val
|
||||
|
||||
elif tag in ["PropertyColor"]:
|
||||
if self.prop and self.obj and (self.short == 0):
|
||||
c = int(attributes["value"])
|
||||
r = float((c >> 24) & 0xFF) / 255.0
|
||||
g = float((c >> 16) & 0xFF) / 255.0
|
||||
b = float((c >> 8) & 0xFF) / 255.0
|
||||
val = str((r, g, b))
|
||||
self.contents[self.obj + "00000000::" + self.prop] = val
|
||||
|
||||
elif tag == "Objects":
|
||||
self.count = attributes["Count"]
|
||||
self.obj = None
|
||||
|
||||
# Print all the contents of the document properties
|
||||
items = self.contents.items()
|
||||
items = sorted(items)
|
||||
for key, value in items:
|
||||
key = self.clean(key)
|
||||
value = self.clean(value)
|
||||
print(" " + key + " : " + value)
|
||||
print(" Objects: (" + self.count + ")")
|
||||
self.contents = {}
|
||||
|
||||
def endElement(self, tag):
|
||||
|
||||
if (tag == "Document") and (self.short != 2):
|
||||
items = self.contents.items()
|
||||
items = sorted(items)
|
||||
for key, value in items:
|
||||
key = self.clean(key)
|
||||
if "00000000::" in key:
|
||||
key = " " + key.split("00000000::")[1]
|
||||
value = self.clean(value)
|
||||
if value:
|
||||
print(" " + key + " : " + value)
|
||||
|
||||
def clean(self, value):
|
||||
|
||||
value = value.strip()
|
||||
return value
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
if len(sys.argv) < 2:
|
||||
print(__doc__)
|
||||
sys.exit()
|
||||
|
||||
if ("-h" in sys.argv[1:]) or ("--help" in sys.argv[1:]):
|
||||
print(__doc__)
|
||||
sys.exit()
|
||||
|
||||
ext = sys.argv[-1].rsplit(".")[-1].lower()
|
||||
if not ext.startswith("fcstd") and not ext.startswith("fcbak"):
|
||||
print(__doc__)
|
||||
sys.exit()
|
||||
|
||||
if ("-vs" in sys.argv[1:]) or ("--veryshort" in sys.argv[1:]):
|
||||
short = 2
|
||||
elif ("-s" in sys.argv[1:]) or ("--short" in sys.argv[1:]):
|
||||
short = 1
|
||||
else:
|
||||
short = 0
|
||||
|
||||
if ("-g" in sys.argv[1:]) or ("--gui" in sys.argv[1:]):
|
||||
gui = True
|
||||
else:
|
||||
gui = False
|
||||
|
||||
zfile = zipfile.ZipFile(sys.argv[-1])
|
||||
|
||||
if not "Document.xml" in zfile.namelist():
|
||||
sys.exit(1)
|
||||
doc = zfile.read("Document.xml")
|
||||
if gui and "GuiDocument.xml" in zfile.namelist():
|
||||
guidoc = zfile.read("GuiDocument.xml")
|
||||
guidoc = re.sub(b"<\?xml.*?-->", b" ", guidoc, flags=re.MULTILINE | re.DOTALL)
|
||||
# a valid xml doc can have only one root element. So we need to insert
|
||||
# all the contents of the GUiDocument <document> tag into the main one
|
||||
doc = re.sub(b"<\/Document>", b"", doc, flags=re.MULTILINE | re.DOTALL)
|
||||
guidoc = re.sub(b"<Document.*?>", b" ", guidoc, flags=re.MULTILINE | re.DOTALL)
|
||||
doc += guidoc
|
||||
s = os.path.getsize(sys.argv[-1])
|
||||
if s < 1024:
|
||||
s = str(s) + "B"
|
||||
elif s > 1048576:
|
||||
s = str(s / 1048576) + "M"
|
||||
else:
|
||||
s = str(s / 1024) + "K"
|
||||
print("Document: " + sys.argv[-1] + " (" + s + ")")
|
||||
print(" SHA1: " + str(hashlib.sha1(open(sys.argv[-1], "rb").read()).hexdigest()))
|
||||
xml.sax.parseString(doc, FreeCADFileHandler(zfile, short))
|
||||
3
.local/bin/foxfetch
Executable file
3
.local/bin/foxfetch
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
|
||||
uwufetch | sed 's/joe/vixi/g'
|
||||
100
.local/bin/qalctex
Executable file
100
.local/bin/qalctex
Executable file
@@ -0,0 +1,100 @@
|
||||
#!/bin/python
|
||||
|
||||
import subprocess
|
||||
import re
|
||||
|
||||
# Dictionary for symbol conversion to LaTeX format
|
||||
latex_symbols = {
|
||||
"Ω": r"\Omega",
|
||||
"ohm": r"\Omega",
|
||||
"A": r"\text{A}",
|
||||
"V": r"\text{V}",
|
||||
"milliamperes": r"\text{mA}",
|
||||
"*": r"\cdot",
|
||||
"N*m": r"\text{N} \cdot \text{m}",
|
||||
"in*lb": r"\text{in} \cdot \text{lb}",
|
||||
"||": r"\|",
|
||||
"−": r"-",
|
||||
"μ": r"\mu",
|
||||
"−": r"-",
|
||||
}
|
||||
|
||||
|
||||
def run_qalc(expression):
|
||||
# Run qalc with the provided expression
|
||||
result = subprocess.run(["qalc", expression], stdout=subprocess.PIPE, text=True)
|
||||
output = result.stdout
|
||||
return output
|
||||
|
||||
|
||||
def format_expression_for_latex(expression):
|
||||
# Replace the units and special characters in the input expression using the dictionary
|
||||
for symbol, latex_symbol in latex_symbols.items():
|
||||
expression = expression.replace(symbol, latex_symbol)
|
||||
|
||||
return expression
|
||||
|
||||
|
||||
def format_result_for_latex(output):
|
||||
# Get the last line of qalc output (the answer)
|
||||
output = output.strip().split("\n")[-1]
|
||||
|
||||
# Check if the result is approximate (contains "≈")
|
||||
approx_match = "≈" in output
|
||||
|
||||
# Extract the value and unit from the result
|
||||
match = re.search(r"(≈|=)\s*([-\d\.]+)\s*(.*)", output)
|
||||
if match:
|
||||
_, value, unit = match.groups()
|
||||
# Replace the units and special characters using the dictionary
|
||||
unit = unit.strip()
|
||||
for symbol, latex_symbol in latex_symbols.items():
|
||||
unit = unit.replace(symbol, latex_symbol)
|
||||
|
||||
# Use = or \approx in LaTeX based on whether the result is approximate
|
||||
equal_symbol = r"\approx" if approx_match else "="
|
||||
|
||||
# Only add \, if there's a unit
|
||||
if unit:
|
||||
latex_result = f"{equal_symbol} {value.strip()} \\, {unit}"
|
||||
else:
|
||||
latex_result = f"{equal_symbol} {value.strip()}"
|
||||
|
||||
return latex_result
|
||||
return output # Fallback to returning the raw qalc output if no match
|
||||
|
||||
|
||||
def copy_to_clipboard(text):
|
||||
# Use wl-copy to send the text to the clipboard
|
||||
subprocess.run(["wl-copy"], input=text, text=True)
|
||||
|
||||
|
||||
def main():
|
||||
try:
|
||||
while True:
|
||||
# Input the qalc expression
|
||||
expression = input("\nEnter qalc expression (Ctrl+C to exit): ")
|
||||
|
||||
# Run qalc and get the result
|
||||
qalc_output = run_qalc(expression)
|
||||
|
||||
# Format the input expression for LaTeX
|
||||
latex_expression = format_expression_for_latex(expression)
|
||||
|
||||
# Format the output result for LaTeX
|
||||
latex_result = format_result_for_latex(qalc_output)
|
||||
|
||||
# Combine both input expression and result for final LaTeX output
|
||||
final_latex_output = f"{latex_expression} {latex_result}"
|
||||
|
||||
# Print and copy to clipboard
|
||||
print(f"Final LaTeX output:\n{final_latex_output}")
|
||||
copy_to_clipboard(final_latex_output)
|
||||
print("LaTeX result copied to clipboard!")
|
||||
|
||||
except KeyboardInterrupt:
|
||||
print("\nExiting...")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
5
.local/bin/switch_keys.sh
Executable file
5
.local/bin/switch_keys.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
# From here https://github.com/drduh/YubiKey-Guide#readme
|
||||
|
||||
gpg-connect-agent "scd serialno" "learn --force" /bye
|
||||
5
.oh-my-zsh/custom/custom_alias.zsh
Normal file
5
.oh-my-zsh/custom/custom_alias.zsh
Normal file
@@ -0,0 +1,5 @@
|
||||
# This line allows the word 'custom' to specify the dotfiles bare git repo
|
||||
alias config='git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
|
||||
|
||||
# Alias 'fucking' to 'sudo' cuz of this meme https://www.memesmonkey.com/topic/linux#&gid=1&pid=10
|
||||
alias fucking=sudo
|
||||
215
.ssh/config
Normal file
215
.ssh/config
Normal file
@@ -0,0 +1,215 @@
|
||||
# SSH For my own hosts
|
||||
# Oxygen
|
||||
Host oxygen
|
||||
HostName 10.85.3.30
|
||||
User joe
|
||||
|
||||
Host crawler.kitsunehosting.net
|
||||
HostName crawler.kitsunehosting.net
|
||||
User joe
|
||||
|
||||
host edge
|
||||
HostName 10.85.5.52
|
||||
User joe
|
||||
|
||||
host lakemesh
|
||||
HostName 172.25.72.74
|
||||
User joe
|
||||
|
||||
host portainer
|
||||
HostName 10.85.3.60
|
||||
User joe
|
||||
|
||||
host bitwarden
|
||||
HostName 10.85.3.83
|
||||
User joe
|
||||
|
||||
host frigate
|
||||
IdentityFile ~/.ssh/hydroxonium
|
||||
HostName 10.85.5.20
|
||||
User joe
|
||||
|
||||
host portainer
|
||||
IdentityFile ~/.ssh/hydroxonium
|
||||
HostName 10.85.3.60
|
||||
User joe
|
||||
|
||||
host lithium
|
||||
IdentityFile ~/.ssh/gallium
|
||||
HostName 10.85.3.112
|
||||
IPQoS cs0 cs0
|
||||
User joe
|
||||
|
||||
host matrix
|
||||
IdentityFile ~/.ssh/gallium
|
||||
HostName 10.85.3.38
|
||||
user joe
|
||||
|
||||
host crackheadbot
|
||||
HostName 10.85.3.182
|
||||
User joe
|
||||
|
||||
host dockerhost
|
||||
HostName 10.85.3.75
|
||||
User joe
|
||||
|
||||
Host cobalt
|
||||
HostName 10.85.3.6
|
||||
User root
|
||||
|
||||
Host ssh.kitsunehosting.net
|
||||
port 2222
|
||||
IdentityFile ~/.ssh/gitea
|
||||
|
||||
# Supermicro machine in the server rack
|
||||
Host manganese
|
||||
HostName 10.85.3.5
|
||||
User root
|
||||
|
||||
# R710
|
||||
Host nickel
|
||||
HostName 10.85.3.4
|
||||
User root
|
||||
|
||||
# My main NAS
|
||||
Host zinc
|
||||
IdentityFile ~/.ssh/hydroxonium
|
||||
HostName 10.85.3.120
|
||||
User joe
|
||||
|
||||
# APRS
|
||||
Host houston
|
||||
IdentityFile ~/.ssh/hydroxonium
|
||||
HostName 10.85.3.39
|
||||
User joe
|
||||
|
||||
Host deck
|
||||
HostName 10.85.3.221
|
||||
User deck
|
||||
|
||||
# booru Image Server
|
||||
Host booru
|
||||
IdentityFile ~/.ssh/hydroxonium
|
||||
HostName 10.85.3.71
|
||||
User joe
|
||||
|
||||
# Caddy
|
||||
Host caddy
|
||||
IdentityFile ~/.ssh/hydroxonium
|
||||
HostName 10.85.3.9
|
||||
User joe
|
||||
|
||||
# Robotics
|
||||
# 1721's main NAS
|
||||
Host flattoaster
|
||||
HostName 10.17.21.10
|
||||
PreferredAuthentications password
|
||||
IdentityFile none
|
||||
User root
|
||||
|
||||
Host robotics-vps
|
||||
HostName 50.116.52.250
|
||||
User root
|
||||
|
||||
Host lapis
|
||||
HostName 10.17.21.30
|
||||
User joe
|
||||
|
||||
|
||||
# SSH for git servers
|
||||
# Gitlab
|
||||
Host gitlab.com
|
||||
IdentityFile ~/.ssh/gitlab
|
||||
UpdateHostKeys no
|
||||
|
||||
# Arch User Repo
|
||||
Host aur.archlinux.org
|
||||
IdentityFile ~/.ssh/aur
|
||||
User aur
|
||||
|
||||
# Personal Git Server
|
||||
Host ssh.kitsunehosting.net
|
||||
Port 2222
|
||||
IdentityFile ~/.ssh/gitea
|
||||
|
||||
# Github
|
||||
Host github.com
|
||||
Hostname ssh.github.com
|
||||
Port 443
|
||||
User git
|
||||
IdentityFile ~/.ssh/github
|
||||
|
||||
Host snowsunehost
|
||||
Hostname 10.85.3.65
|
||||
User joe
|
||||
|
||||
# Also github but, for snowsune
|
||||
Host github_snowsune
|
||||
HostName ssh.github.com
|
||||
User git
|
||||
Port 443
|
||||
IdentityFile ~/.ssh/github_snowsune
|
||||
IdentitiesOnly yes
|
||||
|
||||
# Bitbucket
|
||||
Host bitbucket.org
|
||||
IdentityFile ~/.ssh/bitbucket
|
||||
|
||||
# Silvertech
|
||||
Host devserver
|
||||
HostName 10.12.32.35
|
||||
User joe
|
||||
|
||||
Host bosch
|
||||
HostName 192.168.0.41
|
||||
#IdentityFile ~/.ssh/silvertech/ssh_host_dsa_key
|
||||
#UpdateHostKeys no
|
||||
|
||||
Host retropie
|
||||
HostName 10.19.80.2
|
||||
User pi
|
||||
IdentityFile ~/.ssh/silvertech/silvertech
|
||||
IdentitiesOnly yes
|
||||
|
||||
# The little docker host in the closet
|
||||
# Runs the vestabot image
|
||||
Host stdocker1
|
||||
HostName 10.10.20.27
|
||||
IdentityFile ~/.ssh/silvertech-iot
|
||||
|
||||
# Platformio remote
|
||||
Host pio-remote
|
||||
HostName 10.144.0.15
|
||||
IdentityFile ~/.ssh/silvertech-iot
|
||||
|
||||
# Little mini-pc in the IOT room
|
||||
Host pioremote
|
||||
# This is actually a zerotier ip
|
||||
HostName 10.144.0.15
|
||||
IdentityFile ~/.ssh/silvertech/silvertech
|
||||
IdentitiesOnly yes
|
||||
|
||||
# Work laptop
|
||||
Host workLaptop
|
||||
HostName 10.144.236.234
|
||||
IdentityFile ~/.ssh/hydroxonium
|
||||
|
||||
# Argen pi
|
||||
Host argen
|
||||
HostName 10.10.20.11
|
||||
User joe
|
||||
IdentityFile ~/.ssh/gitlab
|
||||
|
||||
# Millyard labs
|
||||
Host git.millyardlabs.com
|
||||
IdentityFile ~/.ssh/millyard
|
||||
|
||||
Host asterisk
|
||||
HostName 10.85.3.155
|
||||
IdentityFile ~/.ssh/hydroxonium
|
||||
|
||||
# Pterodactyal stuff
|
||||
Host wing1.kitsunehosting.net
|
||||
HostName wing1.kitsunehosting.net
|
||||
PreferredAuthentications password
|
||||
IdentityFile none
|
||||
BIN
.wallpaper/ArchLinux Quadrants/ArchLinux Quad 00.png
Normal file
BIN
.wallpaper/ArchLinux Quadrants/ArchLinux Quad 00.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 184 KiB |
BIN
.wallpaper/ArchLinux Quadrants/ArchLinux Quad 01.png
Normal file
BIN
.wallpaper/ArchLinux Quadrants/ArchLinux Quad 01.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 266 KiB |
BIN
.wallpaper/ArchLinux Quadrants/ArchLinux Quad 10.png
Normal file
BIN
.wallpaper/ArchLinux Quadrants/ArchLinux Quad 10.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 265 KiB |
BIN
.wallpaper/ArchLinux Quadrants/ArchLinux Quad 11.png
Normal file
BIN
.wallpaper/ArchLinux Quadrants/ArchLinux Quad 11.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 257 KiB |
BIN
.wallpaper/Riven.png
Normal file
BIN
.wallpaper/Riven.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 288 KiB |
61
.zshrc
61
.zshrc
@@ -1,10 +1,24 @@
|
||||
# Joe added this:
|
||||
#neofetch | lolcat
|
||||
uwufetch
|
||||
echo ""
|
||||
fortune -a
|
||||
|
||||
# This is for platformio on work machine
|
||||
path+=("$HOME/.platformio/penv/bin")
|
||||
|
||||
# Add my bins to path
|
||||
path+=("$HOME/.local/bin")
|
||||
path+=("$HOME/Pictures/Furry/Scripts")
|
||||
path+=("/opt/balena-cli/")
|
||||
export PATH
|
||||
|
||||
# LaTeX Import path
|
||||
export TEXINPUTS=/home/joe/College/SNHU/LaTeX:$(kpsepath tex | tr ':' '\n' | head -n 1):
|
||||
|
||||
# Not sure why but, needed to path these manually for ruby bin
|
||||
path+=("/home/joe/.local/share/gem/ruby/3.3.0/bin")
|
||||
|
||||
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
|
||||
# Initialization code that may require console input (password prompts, [y/n]
|
||||
# confirmations, etc.) must go above this block; everything else may go below.
|
||||
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
|
||||
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
|
||||
fi
|
||||
@@ -13,7 +27,7 @@ fi
|
||||
# export PATH=$HOME/bin:/usr/local/bin:$PATH
|
||||
|
||||
# Path to your oh-my-zsh installation.
|
||||
export ZSH="/home/joe/.oh-my-zsh"
|
||||
export ZSH="$HOME/.oh-my-zsh"
|
||||
|
||||
# Set name of the theme to load --- if set to "random", it will
|
||||
# load a random theme each time oh-my-zsh is loaded, in which case,
|
||||
@@ -89,6 +103,7 @@ plugins=(
|
||||
zsh-autosuggestions
|
||||
zsh-syntax-highlighting
|
||||
zsh-z
|
||||
virtualenv
|
||||
)
|
||||
|
||||
source $ZSH/oh-my-zsh.sh
|
||||
@@ -101,11 +116,11 @@ source $ZSH/oh-my-zsh.sh
|
||||
# export LANG=en_US.UTF-8
|
||||
|
||||
# Preferred editor for local and remote sessions
|
||||
# if [[ -n $SSH_CONNECTION ]]; then
|
||||
# export EDITOR='vim'
|
||||
# else
|
||||
# export EDITOR='mvim'
|
||||
# fi
|
||||
if [[ -n $SSH_CONNECTION ]]; then
|
||||
export EDITOR='ee'
|
||||
else
|
||||
export EDITOR='nano'
|
||||
fi
|
||||
|
||||
# Compilation flags
|
||||
# export ARCHFLAGS="-arch x86_64"
|
||||
@@ -119,8 +134,12 @@ source $ZSH/oh-my-zsh.sh
|
||||
# alias zshconfig="mate ~/.zshrc"
|
||||
# alias ohmyzsh="mate ~/.oh-my-zsh"
|
||||
|
||||
# Added this for dotfiles alias, may want to make a custom config folder later.
|
||||
alias config='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
|
||||
# https://www.reddit.com/r/archlinux/comments/p0y2hs/flatpak/
|
||||
alias update="paru -Syu --skipreview; flatpak update; sudo snap refresh"
|
||||
|
||||
# Power
|
||||
alias upshift="powerprofilesctl set performance"
|
||||
alias downshift="powerprofilesctl set power-saver"
|
||||
|
||||
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
|
||||
|
||||
@@ -129,3 +148,23 @@ export FZF_DEFAULT_OPTS="--layout=reverse --inline-info --height=80%"
|
||||
|
||||
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
|
||||
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
|
||||
|
||||
|
||||
# This is fo cumtanks lol
|
||||
cumtanks() {
|
||||
cd /home/joe/git/Snowsune/cumtanks || return 1
|
||||
EPOCH=$(date +%s)
|
||||
DATA_JSON="www/data.json"
|
||||
tmpfile=$(mktemp)
|
||||
awk -v epoch="$EPOCH" '
|
||||
BEGIN { added=0 }
|
||||
/"logs"[ \t]*:[ \t]*\[/ { inlogs=1 }
|
||||
inlogs && /\]/ && !added {
|
||||
sub(/\]/, " ,{ \"date\": " epoch ", \"text\": \"\" }\n ]")
|
||||
added=1
|
||||
}
|
||||
{ print }
|
||||
' "$DATA_JSON" > "$tmpfile" && mv "$tmpfile" "$DATA_JSON"
|
||||
sed -i 's/,\n ]/\n ]/' "$DATA_JSON"
|
||||
code -g "$DATA_JSON":$(grep -n '"logs"' "$DATA_JSON" | cut -d: -f1)
|
||||
}
|
||||
|
||||
54
README.md
Normal file
54
README.md
Normal file
@@ -0,0 +1,54 @@
|
||||
# Clone repo
|
||||
```git clone --bare https://kitsunehosting.net/gitea/Kenwood/dotfiles.git $HOME/.dotfiles```
|
||||
|
||||
# Make a temp alias (will be perminant via .zshrc)
|
||||
```alias config='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'```
|
||||
|
||||
# Pull stuff down!
|
||||
```config checkout```
|
||||
|
||||
# If things offend, backup or delete existing/differeing files.
|
||||
# This could work but idk
|
||||
```
|
||||
mkdir -p .config-backup && \
|
||||
config checkout 2>&1 | egrep "\s+\." | awk {'print $1'} | \
|
||||
xargs -I{} mv {} .config-backup/{}
|
||||
```
|
||||
|
||||
# Also use this to keep it all neat!
|
||||
```
|
||||
config config --local status.showUntrackedFiles no
|
||||
```
|
||||
|
||||
|
||||
# Also, clone all the zsh plugins
|
||||
# Install omzsh!
|
||||
```
|
||||
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
|
||||
```
|
||||
|
||||
# p10k
|
||||
```
|
||||
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
|
||||
```
|
||||
|
||||
# Autocompletions
|
||||
```
|
||||
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
|
||||
```
|
||||
|
||||
# Syntax highlighting
|
||||
```
|
||||
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
|
||||
```
|
||||
|
||||
# zsh-z
|
||||
```
|
||||
git clone https://github.com/agkozak/zsh-z $ZSH_CUSTOM/plugins/zsh-z
|
||||
```
|
||||
|
||||
# fzf
|
||||
```
|
||||
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
|
||||
~/.fzf/install
|
||||
```
|
||||
150
schemes/laptop_default.kksrc
Normal file
150
schemes/laptop_default.kksrc
Normal file
@@ -0,0 +1,150 @@
|
||||
[kwin][Global Shortcuts]
|
||||
Activate Window Demanding Attention=Ctrl+Alt+A
|
||||
ClearLastMouseMark=Meta+Shift+F12
|
||||
ClearMouseMarks=Meta+Shift+F11
|
||||
Decrease Opacity=
|
||||
Expose=Ctrl+F9
|
||||
ExposeAll=Ctrl+F10; Launch (C)
|
||||
ExposeClass=Ctrl+F7
|
||||
Increase Opacity=
|
||||
Invert Screen Colors=
|
||||
Kill Window=Ctrl+Alt+Esc
|
||||
MoveMouseToCenter=Meta+F6
|
||||
MoveMouseToFocus=Meta+F5
|
||||
MoveZoomDown=
|
||||
MoveZoomLeft=
|
||||
MoveZoomRight=
|
||||
MoveZoomUp=
|
||||
Setup Window Shortcut=
|
||||
Show Desktop=Meta+D
|
||||
ShowDesktopGrid=Ctrl+F8
|
||||
Suspend Compositing=Alt+Shift+F12
|
||||
Switch One Desktop Down=Meta+Ctrl+Down
|
||||
Switch One Desktop Up=Meta+Ctrl+Up
|
||||
Switch One Desktop to the Left=Meta+Ctrl+Left
|
||||
Switch One Desktop to the Right=Meta+Ctrl+Right
|
||||
Switch Window Down=
|
||||
Switch Window Left=
|
||||
Switch Window Right=
|
||||
Switch Window Up=
|
||||
Switch to Desktop 1=Ctrl+F1
|
||||
Switch to Desktop 10=
|
||||
Switch to Desktop 11=
|
||||
Switch to Desktop 12=
|
||||
Switch to Desktop 13=
|
||||
Switch to Desktop 14=
|
||||
Switch to Desktop 15=
|
||||
Switch to Desktop 16=
|
||||
Switch to Desktop 17=
|
||||
Switch to Desktop 18=
|
||||
Switch to Desktop 19=
|
||||
Switch to Desktop 2=Ctrl+F2
|
||||
Switch to Desktop 20=
|
||||
Switch to Desktop 3=Ctrl+F3
|
||||
Switch to Desktop 4=Ctrl+F4
|
||||
Switch to Desktop 5=
|
||||
Switch to Desktop 6=
|
||||
Switch to Desktop 7=
|
||||
Switch to Desktop 8=
|
||||
Switch to Desktop 9=
|
||||
Switch to Next Desktop=
|
||||
Switch to Next Screen=
|
||||
Switch to Previous Desktop=
|
||||
Switch to Previous Screen=
|
||||
Switch to Screen 0=
|
||||
Switch to Screen 1=
|
||||
Switch to Screen 2=
|
||||
Switch to Screen 3=
|
||||
Switch to Screen 4=
|
||||
Switch to Screen 5=
|
||||
Switch to Screen 6=
|
||||
Switch to Screen 7=
|
||||
Toggle Night Color=
|
||||
Toggle Window Raise/Lower=
|
||||
ToggleCurrentThumbnail=Meta+Ctrl+T
|
||||
Walk Through Desktop List=
|
||||
Walk Through Desktop List (Reverse)=
|
||||
Walk Through Desktops=
|
||||
Walk Through Desktops (Reverse)=
|
||||
Walk Through Windows=Alt+Tab
|
||||
Walk Through Windows (Reverse)=Alt+Shift+Backtab
|
||||
Walk Through Windows Alternative=
|
||||
Walk Through Windows Alternative (Reverse)=
|
||||
Walk Through Windows of Current Application=Alt+`
|
||||
Walk Through Windows of Current Application (Reverse)=Alt+~
|
||||
Walk Through Windows of Current Application Alternative=
|
||||
Walk Through Windows of Current Application Alternative (Reverse)=
|
||||
Window Above Other Windows=
|
||||
Window Below Other Windows=
|
||||
Window Close=Alt+F4
|
||||
Window Fullscreen=
|
||||
Window Grow Horizontal=
|
||||
Window Grow Vertical=
|
||||
Window Lower=
|
||||
Window Maximize=Meta+W
|
||||
Window Maximize Horizontal=
|
||||
Window Maximize Vertical=
|
||||
Window Minimize=Meta+Alt+Down
|
||||
Window Move=
|
||||
Window No Border=
|
||||
Window On All Desktops=
|
||||
Window One Desktop Down=
|
||||
Window One Desktop Up=
|
||||
Window One Desktop to the Left=
|
||||
Window One Desktop to the Right=
|
||||
Window Operations Menu=Alt+F3
|
||||
Window Pack Down=
|
||||
Window Pack Left=
|
||||
Window Pack Right=
|
||||
Window Pack Up=
|
||||
Window Quick Tile Bottom=Meta+Down
|
||||
Window Quick Tile Bottom Left=Meta+Shift+Left
|
||||
Window Quick Tile Bottom Right=Meta+Shift+Down
|
||||
Window Quick Tile Left=Meta+Left
|
||||
Window Quick Tile Right=Meta+Right
|
||||
Window Quick Tile Top=Meta+Up
|
||||
Window Quick Tile Top Left=Meta+Shift+Up
|
||||
Window Quick Tile Top Right=Meta+Shift+Right
|
||||
Window Raise=
|
||||
Window Resize=
|
||||
Window Shade=
|
||||
Window Shrink Horizontal=
|
||||
Window Shrink Vertical=
|
||||
Window to Desktop 1=
|
||||
Window to Desktop 10=
|
||||
Window to Desktop 11=
|
||||
Window to Desktop 12=
|
||||
Window to Desktop 13=
|
||||
Window to Desktop 14=
|
||||
Window to Desktop 15=
|
||||
Window to Desktop 16=
|
||||
Window to Desktop 17=
|
||||
Window to Desktop 18=
|
||||
Window to Desktop 19=
|
||||
Window to Desktop 2=
|
||||
Window to Desktop 20=
|
||||
Window to Desktop 3=
|
||||
Window to Desktop 4=
|
||||
Window to Desktop 5=
|
||||
Window to Desktop 6=
|
||||
Window to Desktop 7=
|
||||
Window to Desktop 8=
|
||||
Window to Desktop 9=
|
||||
Window to Next Desktop=
|
||||
Window to Next Screen=
|
||||
Window to Previous Desktop=
|
||||
Window to Previous Screen=
|
||||
Window to Screen 0=
|
||||
Window to Screen 1=
|
||||
Window to Screen 2=
|
||||
Window to Screen 3=
|
||||
Window to Screen 4=
|
||||
Window to Screen 5=
|
||||
Window to Screen 6=
|
||||
Window to Screen 7=
|
||||
view_actual_size=Meta+0
|
||||
view_zoom_in=Meta+=
|
||||
view_zoom_out=Meta+-
|
||||
|
||||
[yakuake][Global Shortcuts]
|
||||
toggle-window-state=F12
|
||||
Reference in New Issue
Block a user