updated help.

This commit is contained in:
2026-05-31 18:53:35 +02:00
parent 3908162636
commit 8442d46a21
30 changed files with 912 additions and 38 deletions
+7 -7
View File
@@ -37,7 +37,7 @@
"windSpeedUnit": "kmh", "windSpeedUnit": "kmh",
"nightModeEnabled": false, "nightModeEnabled": false,
"animationSpeed": 1, "animationSpeed": 1,
"customAnimationDuration": 500, "customAnimationDuration": 200,
"syncComponentAnimationSpeeds": true, "syncComponentAnimationSpeeds": true,
"popoutAnimationSpeed": 1, "popoutAnimationSpeed": 1,
"popoutCustomAnimationDuration": 150, "popoutCustomAnimationDuration": 150,
@@ -150,8 +150,8 @@
"workspaceUnfocusedColorMode": "default", "workspaceUnfocusedColorMode": "default",
"workspaceUrgentColorMode": "default", "workspaceUrgentColorMode": "default",
"workspaceFocusedBorderEnabled": false, "workspaceFocusedBorderEnabled": false,
"workspaceFocusedBorderColor": "primary", "workspaceFocusedBorderColor": "secondary",
"workspaceFocusedBorderThickness": 2, "workspaceFocusedBorderThickness": 5,
"workspaceNameIcons": {}, "workspaceNameIcons": {},
"waveProgressEnabled": true, "waveProgressEnabled": true,
"scrollTitleEnabled": true, "scrollTitleEnabled": true,
@@ -199,7 +199,7 @@
"appDrawerSectionViewModes": {}, "appDrawerSectionViewModes": {},
"niriOverviewOverlayEnabled": true, "niriOverviewOverlayEnabled": true,
"dankLauncherV2Size": "large", "dankLauncherV2Size": "large",
"dankLauncherV2BorderEnabled": false, "dankLauncherV2BorderEnabled": true,
"dankLauncherV2BorderThickness": 2, "dankLauncherV2BorderThickness": 2,
"dankLauncherV2BorderColor": "primary", "dankLauncherV2BorderColor": "primary",
"dankLauncherV2ShowFooter": true, "dankLauncherV2ShowFooter": true,
@@ -345,7 +345,7 @@
"u2fMode": "or", "u2fMode": "or",
"lockScreenActiveMonitor": "all", "lockScreenActiveMonitor": "all",
"lockScreenInactiveColor": "#000000", "lockScreenInactiveColor": "#000000",
"lockScreenNotificationMode": 0, "lockScreenNotificationMode": 2,
"hideBrightnessSlider": false, "hideBrightnessSlider": false,
"notificationTimeoutLow": 5000, "notificationTimeoutLow": 5000,
"notificationTimeoutNormal": 5000, "notificationTimeoutNormal": 5000,
@@ -355,7 +355,7 @@
"notificationAnimationSpeed": 1, "notificationAnimationSpeed": 1,
"notificationCustomAnimationDuration": 400, "notificationCustomAnimationDuration": 400,
"notificationHistoryEnabled": true, "notificationHistoryEnabled": true,
"notificationHistoryMaxCount": 50, "notificationHistoryMaxCount": 200,
"notificationHistoryMaxAgeDays": 7, "notificationHistoryMaxAgeDays": 7,
"notificationHistorySaveLow": true, "notificationHistorySaveLow": true,
"notificationHistorySaveNormal": true, "notificationHistorySaveNormal": true,
@@ -521,7 +521,7 @@
"fontScale": 1, "fontScale": 1,
"iconScale": 1, "iconScale": 1,
"autoHide": false, "autoHide": false,
"autoHideDelay": 250, "autoHideDelay": 0,
"showOnWindowsOpen": false, "showOnWindowsOpen": false,
"openOnOverview": false, "openOnOverview": false,
"visible": true, "visible": true,
+2 -2
View File
@@ -2,9 +2,9 @@
echo "installing pre-requisites" echo "installing pre-requisites"
sudo pacman -Syu ghostty shelly firefox dms-shell yay git wl-clipboard nautilus zsh-history-substring-search zsh-syntax-highlighting zsh-autosuggestions zsh-doc stow brightnessctl pipewire-pulse pipewire matugen adw-gtk-theme hyprshot grim satty code shelly zoxide zsh zsh-theme-powerlevel10k eza kanshi ttf-nerd-fonts-symbols-common ttf-nerd-fonts-symbols-mono ttf-nerd-fonts-symbols ttf-cascadia-code-nerd ttf-cascadia-mono-nerd ttf-terminus-nerd ttf-firacode-nerd ttf-ubuntu-nerd sudo pacman -Syu ghostty shelly firefox adw-gtk-theme dms-shell yay git wl-clipboard nautilus zsh-history-substring-search zsh-syntax-highlighting zsh-autosuggestions zsh-doc stow brightnessctl pipewire-pulse pipewire matugen adw-gtk-theme hyprshot grim satty code shelly zoxide zsh zsh-theme-powerlevel10k eza kanshi ttf-nerd-fonts-symbols-common ttf-nerd-fonts-symbols-mono ttf-nerd-fonts-symbols ttf-cascadia-code-nerd ttf-cascadia-mono-nerd ttf-terminus-nerd ttf-firacode-nerd ttf-ubuntu-nerd
yay -S mangowm-git dsearch-bin yay -S mangowm-git dsearch-bin qt6ct-kde
WORKINGDIR=$(pwd) WORKINGDIR=$(pwd)
+1 -1
View File
@@ -19,7 +19,7 @@ bind=SUPER+ALT,F,togglefakefullscreen, # make program think window is fullscreen
bind=SUPER,Q,killclient, # Close active window bind=SUPER,Q,killclient, # Close active window
bind=SUPER+SHIFT,Q,quit, # Exit mango bind=SUPER+SHIFT,Q,quit, # Exit mango
bind=SUPER+SHIFT,P,toggleoverlay, # toggle overlay mode bind=SUPER+SHIFT,P,toggleoverlay, # toggle overlay mode
bind=SUPER,P,spawn_shell,mmsg dispatch toggleglobal && mmsg dispatch togglefloating # pin window across workspaces bind=SUPER,P,toggleglobal
bind=ALT,TAB,toggleoverview bind=ALT,TAB,toggleoverview
bind=SUPER,A,spawn_shell,~/.config/sdgos/misc/layoutbutton.sh # special layout toggle bind=SUPER,A,spawn_shell,~/.config/sdgos/misc/layoutbutton.sh # special layout toggle
bind=SUPER+SHIFT,A,switch_layout bind=SUPER+SHIFT,A,switch_layout
+1
View File
@@ -0,0 +1 @@
+1 -1
View File
@@ -2,5 +2,5 @@
while $true; do while $true; do
CMD="" CMD=""
SELECTED=$(ls ~/.config/sdgos/help/topics | fzf --layout=reverse --preview-window 'right:70%:wrap-word' --preview="clear && bat --style=numbers -S -f -m '*:Markdown' ~/.config/sdgos/help/topics/{}") SELECTED=$(ls ~/.config/sdgos/help/topics | fzf --layout=reverse --preview-window 'right:70%:wrap-word' --preview="clear && bat --style=plain -S -f -m '*:Markdown' ~/.config/sdgos/help/topics/{}")
done done
@@ -14,9 +14,14 @@ However, you don't want to be referencing this menu all the time, so here's the
this opens your app runner, it's also set up to find files within your home directory automatically and can find settings for you. this opens your app runner, it's also set up to find files within your home directory automatically and can find settings for you.
[^SUPER+Y]: [^SUPER+Y]:
this opens an installer for software. doing this while holding shift allows you to instead install packages from the Arch User Repository. this opens shelly, your package installer. the first time you can pick which repositories to set it up for, pacman + AUR is recommended, flatpak is optional.
it is recommended to use the normal package installer unless the package is either not available or broken, in which case, use the AUR. *super+shift+Y* will instead open the unipkg TUI (if installed), which will work on non-arch distro's.
in the config, you can tweak these to use omarchy's pacman/AUR TUIs instead, which are simpler.
[^SUPER+R]:
this reloads mango, important when you change the config.
[^SUPER+1-9]: [^SUPER+1-9]:
using SUPER + the number keys allows you to switch between workspaces. holding shift while doing this allows you to take your active window with you. using SUPER + the number keys allows you to switch between workspaces. holding shift while doing this allows you to take your active window with you.
@@ -46,6 +51,9 @@ this opens your terminal
this opens a menu that gives you short info on common commands, pressing enter or double-clicking a command will open the manual page for that command. this opens a menu that gives you short info on common commands, pressing enter or double-clicking a command will open the manual page for that command.
holding shift will instead open this menu! holding shift will instead open this menu!
[^SUPER+X]:
this opens a process manager/performance monitor. you can use this to see what's using your CPU/RAM or to kill frozen programs. you can also copy the command used to start something from here.
[^SUPER+K]: [^SUPER+K]:
as mentioned before, this will give you a full overview of all keys. as mentioned before, this will give you a full overview of all keys.
+35 -17
View File
@@ -2,21 +2,6 @@
## Install TUIs
the process is the same for using Pacman repositories or using the AUR.
Please always prefer using the pacman repositories if possible, only use the AUR if needed.
step 1: either open a terminal and type the alias `pacgui` or `aurgui`, or use the keybind *SUPER+Y* for pacman or *SUPER+SHIFT+Y* for the AUR
step 2: search for your package
step 3: if you wish to install multiple packages, press tab after highlighting each package
step 4: press enter and provide your password
your software will now be installed alongside all of its dependencies
@@ -95,7 +80,7 @@ this also allows you to then use the code-OSS GUI to do git pull, push and sync.
## layout switcher ## layout switcher
you can open the layout switcher with the bind *SUPER+W* you can open the layout switcher with the bind *SUPER+SHIFT+W*
you can then tab through the layouts using the arrow keys and press enter on your desired one. you can then tab through the layouts using the arrow keys and press enter on your desired one.
@@ -112,9 +97,42 @@ you can open this menu using the alias `documentation` in the terminal or the bi
this menu will allow you to quickly open both various documentation sites in firefox as well as custom-built searchable quick reference menu's this menu will allow you to quickly open both various documentation sites in firefox as well as custom-built searchable quick reference menu's
## wallpaper switcher
you can open this with *SUPER+W*, it'll show you the directories in ~/.config/sdgos/wallpapers
each directory can contain any number of images, which will be cycled through. if you do not want cycling, just put one wallpaper in a folder.
you can also cycle with alt+w and shift+alt+w to go forwards and back.
## bar presets
you can open this with *SUPER+SHIFT+D*, this allows you to toggle the various pre-included bars, as well as dock, including some presets.
## tips ## tips
tips are shown automatically when you start your first terminal session, they are also shown when you run the command `tipme` tips are shown automatically when you start your first terminal session, they are also shown when you run the command `tipme`
you can also get a tip in your notifications by pressing the bind *SUPER+0* you can also get a tip in your notifications by pressing the bind *SUPER+0*
## alternative Install TUIs
you need to enable these in your binds.conf file by uncommenting the TUIs and commenting out the default installers (shelly+unipkg)
the process is the same for using Pacman repositories or using the AUR.
Please always prefer using the pacman repositories if possible, only use the AUR if needed.
step 1: either open a terminal and type the alias `pacgui` or `aurgui`, or use the keybind *SUPER+Y* for pacman or *SUPER+SHIFT+Y* for the AUR
step 2: search for your package
step 3: if you wish to install multiple packages, press tab after highlighting each package
step 4: press enter and provide your password
your software will now be installed alongside all of its dependencies
+17 -5
View File
@@ -76,22 +76,34 @@ this menu! spawned with *SUPER+SHIFT+H*
## package installer ## package installer
spawned with *SUPER+Y*, this menu allows you to search the pacman repository, read details and install packages. spawned with *SUPER+Y*, this menu allows you to search the pacman, aur and optionally flatpak repositories.
## AUR installer ## unipkg installer
spawned with *SUPER+SHIFT+Y*, this menu allows you to search the Arch User Repository, read details and install packages. spawned with *SUPER+SHIFT+Y*, this menu uses a package manager agnostic wrapper to present a TUI allowing you to use any of your package managers.
## Mango Config TUI ## Mango Config editor TUI
spawned with *SUPER+M*, this menu gives you a list of your mango configuration files with a preview, selecting an item will open it in the micro text editor. spawned with *SUPER+M*, this menu gives you a list of your mango configuration files with a preview, selecting an item will open it in the micro text editor.
## Mango Config explainer TUI
spawned with *SUPER+ALT+M*, this menu allows you to open any of your mango config files and browse through them line-by-line, showing details on what that line does and how to configure it.
## layout switcher ## layout switcher
spawned with *SUPER+W*, this menu allows you to switch between mangoWM layouts spawned with *SUPER+SHIFT+W*, this menu allows you to switch between mangoWM layouts
## wallpaper switcher
spawned with *SUPER+W*, this allows you to select different wallpaper options.
## bar switcher
spawned with *SUPER+SHIFT+D*, this allows you to switch between different bar layouts as well as toggle individual components.
## documentation ## documentation
+137
View File
@@ -0,0 +1,137 @@
> Window Management
Window Management is done primarily through your keyboard, with a couple of mouse options.
Within Mango, windows will automatically lay themselves out depending on your configured layout. you can tweak this layout at any time using *SUPER+SHIFT+W*.
the different layouts will be covered in 105 - layouts.
the following keybinds will help you with window management:
### general
[^SUPER+Q]: close window
quits the active window, works like pressing the x button on a desktop.
[^SUPER+T]: float/unfloat window
floated windows will appear above your tiled applications, and do not tile.
[^SUPER+F]: toggle fullscreen
fullscreens the application, this puts the application in front of tiled and floating applications but behind overlay applications.
[^SUPER+ALT+F]: toggle fake fullscreen
tells the application it is fullscreen, but keeps the window tiled, this can be used to get rid of things top bars and window decoration.
[^SUPER+SHIFT+P]: toggle overlay mode
overlay mode shows over top of everything regardless of whether it is tiled, floating or fullscreen.
[^SUPER+P]: pin window
makes the window "global", meaning it will stay on your screen regardless of which workspace/tag you're on.
use again to remove.
window *will* resize automatically if tiled, but will still be global if floated.
[^SUPER+A]: special layout toggle
this depends on your layout:
dwindle: maximizes the focused window, keeping it "windowed" but covering all other windows on the screen, making it appear as if it's the only tiled application.
scrolling: changes the scroller ratio for the focused window
grid layouts: toggles gaps
deck and master/stack (aka tile) layouts: swap the focused window with master.
[^ALT+TAB]: toggle and tab through overview
shows you all the windows on your current monitor, regardless of tab. hold down alt and press tab to cycle through, let go of alt to open the workspace/tag of the selected window.
you can also left click to open a window or right click to close it.
### workspace-related
[^SUPER+[1-9]]: switch to workspace
this moves all of your windows to showing this workspace/tag
[^SUPER+SHIFT+[1-9]]: move window to workspace
this will *only* switch the tag/workspace on currently active window, and will move the focused window to that tag/workspace
[^SUPER+ALT+[1-9]]: toggle a workspace
unlike in most other window managers, in mango, you can view multiple tags at once, using super+alt+numbers will toggle visibility of a tag/workspace.
this is independent per monitor.
[^SUPER+SHIFT+A]: cycle through common layouts
this is configured in your config file using the circle_layouts config option (found in layouts.conf)
by default it switches as follows:
dwindle - scroller - vertical scroller - center tile - tile
### scratchpad
[^SUPER+CTRL+C]: move window to scratchpad
this minimizes the focused window to the scratchpad on that monitor. multiple windows can be stored in the scratchpad
[^SUPER+ALT+C]: move window out of scratchpad
this brings the last focused scratchpad window back out of the scratchpad on that monitor
[^SUPER+C]: open/close the scratchpad
views one of the windows in the current monitor's scratchpad. toggle this to cycle through.
[^SUPER+ALT+SPACE]: toggle terminal-specific scratchpad (quick-access terminal)
this is a special second scratchpad that will only ever contain a specially titled instance of ghostty.
if this instance is not yet active, pressing the keybind will spawn one, if one exists but is not in the scratchpad, it'll be pulled into the scratchpad
if there *is* an instance in the terminal-specific scratchpad on that monitor, it'll show/hide that terminal.
SDG-Os pre-loads one instance of ghostty to your main monitor's terminal scratchpad.
### arrow keys
[^SUPER+ARROWS]: move focus
moves focus between windows using the keyboard
[^SUPER+SHIFT+LEFT/RIGHT]: focus previous/next
for some layouts where windows overlap eachother, this will allow you to go to the previously focused window.
[^SUPER+SHIFT+UP/DOWN]: exchange stack clients (previous/next)
moves the window up and down the stack in all master/stack (tiled) layouts.
[^SUPER+CTRL+ARROWS]: resize window
resizes the window
### mouse binds
[^SUPER+LEFTCLICK-DRAG]: drag-and-drop window
this keybind allows you to drag windows around, you can grab a window anywhere. window will be temporarily floating while being dragged and will show where it'll tile to.
if the window was already floating before being dragged, it will continue to float.
[^SUPER+RIGHTCLICK-DRAG]: resize window
this keybind allows you to drag to resize a window, both tiled and floating. Do keep in mind you cannot resize a tiled window in a way that would cause the desktop to be visible.
for example, if you have two windows on a dwindle layout next to eachother, you can *only* resize them by moving the boundary between them left/right.
[^SUPER+MIDDLECLICK]: maximize window
this keeps the window tiled, but allows it to use the full window, swallowing and hiding everything else on the monitor but keeping the top bar available.
@@ -0,0 +1,70 @@
> Installing applications
### installing with Shelly
step 1: open Shelly
you can do this in multiple ways. either you can open shelly from your runner (*SUPER+SPACE* or from the button in the top bar)
step 2: set up Shelly (first launch only)
if this is your first time launching shelly, you'll need to tell shelly which repositories it should use.
pick at least pacman and the AUR, optionally also include flatpak.
step 3: select which repository you want to use
on the left, you'll have two or three tabs:
-pacman
-AUR
-flatpak
this is also the order in which you should use them.
use the pacman repository for all software, unless that software either is not available in pacman or the pacman version does not work.
if pacman does not have it, use the AUR, the AUR contains way more software but is less heavily moderated.
from the AUR, you can generally get multiple versions of the software, versions labeled -git are built from source, versions labeled -bin are a prebuilt binary
if neither have the program you want, flatpak is your last option. flatpaks are sandboxed and cross-platform, which means you'll find the same software across all distro's on flatpak.
however, due to this sandboxing, there's sometimes permission issues with flatpak. you can alter permissions easily using *flatseal*
### installing with Unipkg TUI
to launch the unipkg tui, either press *super+shift+y* or run `unipkg launch-tui` in the terminal
from there, you can select install, and then your package manager of choice.
you'll then be presented with a searchable list of available packages alongside the information about the selected package.
you can multi-select here with *tab*, then press enter to install the selected software (this also installs what you have currently selected)
### installing with Unipkg cli
for this, make sure your ~/.config/unipkg/unipkg.conf is in the right order (pacman - aur - flatpak)
you can do this by either running `micro ~/.config/unipkg/unipkg.conf` or by going to maintenance > edit unipkg.conf in the TUI.
then, to install anything, run `unipkg install any <packagename>`
this will attempt to install the package with all of your package managers in the order they are listed in unipkg.conf, stopping once it successfully finds and installs the package.
### installing with Pacman Directly.
to install a piece of software directly, you can run `sudo pacman -S <package>`
this will install the package with pacman.
### installing from the AUR
SDG-OS comes with yay as its AUR helper, though you can also use paru.
simply run `yay -S <packagename>` to install a package from the AUR.
+119
View File
@@ -0,0 +1,119 @@
> layouts
the following layouts exist, most with multiple variants:
- dwindle
- scroller
- master/stack (called tile)
- monocle
- grid
- fair
- deck
this will also cover a bit more about the *overview* and *scratchpad*
## dwindle
dwindle uses a *binary space partitioning* system.
when you spawn a window, it'll split the currently focused window in half across the longest side.
if the window is wider than it is tall, it'll split vertically.
if the window is taller than it is wide, it'll split horizontally.
in this mode, the special layout toggle *super+a* maximizes the focused window.
## scroller
comes in horizontal and vertical variants.
windows are laid out in an infinitely scrollable strip of columns, you can vertically tile within this column.
in this mode, the special layout toggle *super+a* will change the width of the focused scrolling column between different presets.
you can scroll either with super+arrow keys or by moving your mouse over the windows that are partially outside of the window.
## master/stack (tile)
comes in left, right, vertical and center variants.
these all have a primary window that uses 70% of the monitor and won't change size. all other windows will be tiled around it.
on the left and right variants, the windows will be tiled vertically to the side of the master window.
on the vertical variant, the windows will be tiled horizontally below the master window.
on the center variant, windows will be tiled alternating on the left and right of the master window.
in this mode, the special layout toggle *super+a* will swap the focused window with the master window.
you can also drag and drop a window into the master area to make it the master, pushing the previous master to the top of the stack.
## grid
this is a simple grid setup that keeps all windows the same size. in horizontal grid it'll go left to right, then top to bottom.
a vertical grid will go top to bottom, then left to right.
in this mode, special layout toggle *super+a* will toggle the gaps and borders.
## fair
this is similar to grid, but fills your monitor as "fairly" as possible instead of just allowing empty space like grid.
## monocle
in monocle, you'll see one window at a time. you can cycle through them using *super+shift+left/right* or by using the overview.
the special layout toggle will not do anything in this mode.
## deck
deck is effectively a combination between monocle and master/stack. you'll have a master window and stack, but the stack acts like a monocle layout.
binds work the same, and in this layout, the special layout toggle *super+a* will make the focused window the master.
## overview
to enter the overview, either move your mouse to the top left corner (hot corner settings) or hold down alt while pressing tab.
this will bring you to the overview, showing you all windows on that monitor regardless of tag/workspace or layout.
pressing tab allows you to cycle through, letting go of alt focuses the selected window, moving the workspace/tag on that monitor if needed.
you can also left/right click while in this menu. left click to focus that window, right click to close.
## scratchpad
the scratchpad is effectively an extra hidden space you can store windows in, the core usecase is to store something you will need to frequently access but not for a long time, such as a notepad, music player, terminal or file browser.
pressing *super+c* will toggle visibility for the scratchpad, you'll only see one item in your scratchpad space at a time, by pressing *super+c* multiple times you can cycle through them.
*super+ctrl+c* will move the focused window to that monitor's scratchpad.
*super+alt+c* will move a window back out of the active monitor's scratchpad.
the scratchpad window will show up as a floating window over top of your other windows, and will be slightly smaller than your window, so you can drag-and-drop files from the scratchpad to your workspace.
SDG-OS also comes with a special scratchpad for a terminal, spawned with *super+alt+space*
this scratchpad has some special behaviour: the button will toggle visibility *if* there is a terminal with a specific title already inside it, if there isn't, it'll spawn a new terminal with a specific title or pick one up if a terminal exists with that title but isn't in the scratchpad.
this means that if the scratchpad is empty, you'll have to press the button combination twice: once to spawn it, and then again to put the terminal in the scratchpad.
a specific title is used as an identifier to avoid accidentally moving other terminals into this workspace. only terminals spawned by this keybind can be picked up by this keybind.
the autostart configuration includes pre-loading for the terminal scratchpad on your primary display.
@@ -0,0 +1,81 @@
> basic navigation in the terminal
to help with navigation, SDG-OS comes pre-configured with eza, zoxide and fzf.
eza and zoxide replace your ls and cd commands respectively, fzf gives you access to fuzzy finding.
when you spawn a terminal, you'll see something like this:
  ~
this is prettified using powerlevel10k, and shows your *current* directory.
you can also get the current directory using the command `pwd` (print working directory)
by default, this is your home directory, which as ~ as a shorthand.
the longform is /home/yourusername.
in guides, you may see /home/$(whoami) instead, this will replace $(whoami) with the output of the command "whoami" on run, which outputs your username.
some scripts and commands won't like using ~, so you have to use the full path (for example, this is important when using the ln command to make symlinks)
in this case, if you want your command to be username-agnostic, you can use $(whoami)
to list files in the current directory, type `ls`
this will use eza under the hood and give you a line-by-line output of files.
the lines will look something like this:
drwxr-xr-x - den 24 may 23:57  test
here's what each thing means:
drwxr-xr-x - this is your permissions
- - this is not filled in here as the example is a directory, but will show the size in bytes.
den - this is the account that owns the file
24 mei 23:57 - this is the time/date the file was last modified
and lastly, the name.
you may see something like this:
lrwxrwxrwx - den 12 apr 05:04  .vscode -> /home/den/.vscode-oss
that means that this item is symlinked to /home/den/.vscode-oss
you can move into a directory using `cd <dirname>`
cd actually uses zoxide under the hood, which means that you actually also have fuzzy finding for directories you've visited before.
instead of filling in cd `/home/den/ownCloud/ArchConfig/MangoScripts` for example, i can just run `cd mangoscripts`, as it's the search match that i visit the most often.
cd also supports some special syntax, this can be used on its own or within a path:
~ - shorthand for /home/yourusername
. - shorthand for "current working directory", equal to the directory listed in your prompt.
.. - one directory up from the current working directory
... - two directories up from the current directory
.... - three directories up from the current directory
normally, if you type `cd DirName`, it'll look for DirName in the current directory, which would be equal to `cd ./DirName`
from a fresh terminal, these will do the following:
`cd dir` - will move to /home/username/dir
`cd ~/dir` - will move to /home/username/dir regardless of current location
`cd ./dir` - will move /home/username/dir
`cd /dir` - will move to /dir
`cd ../dir` - will move to /home/dir
`cd ./dir/subdir` - will move to /home/username/dir/subdir
`cd sub` - will move to /home/username/dir/subdir if you've visited it before and it's the most common path you visit with "sub" in it.
@@ -0,0 +1,57 @@
> basic file modification in the terminal
Modifying files and directories is a fundamental skill for working in the terminal. SDG-OS includes tools like `micro` and `nano` for editing files, alongside standard commands for creating, copying, moving, and deleting files.
---
### Creating Files and Directories
- `mkdir <dirname>`: Creates a new directory. For example, `mkdir projects` creates a directory named "projects" in the current working directory.
Use `mkdir -p <path/to/dir>` to create nested directories. For example, `mkdir -p projects/sdgos/scripts` creates all directories in the path, even if intermediate directories don't exist.
- `touch <filename>`: Creates an empty file or updates the timestamp of an existing file. For example, `touch notes.txt` creates an empty file named `notes.txt`.
---
### Copying and Moving Files
- `cp <source> <destination>`: Copies a file or directory to a new location. For example, `cp file.txt ~/backups/` copies "file.txt" to the "backups" directory under your home folder.
Use `cp -r <source> <destination>` to copy directories recursively. For example, `cp -r projects/ ~/backups/` copies the entire "projects" directory and its contents.
you can use a wildcard (\*) to copy multiple files, for example: `cp -r projects/* ~/backups/` will copy all the files inside projects to ~/backups/, rather than copying the projects directory itself to backups.
- `mv <source> <destination>`: Moves or renames a file or directory. For example, `mv oldname.txt newname.txt` renames the file, while `mv file.txt ~/documents/` moves the file to the "documents" directory.
you can also combine these by including the new filename in the destination path: `mv oldname.txt ~/documents/newname.txt`
---
### Deleting Files and Directories
- `rm <filename>`: Deletes a file. For example, `rm notes.txt` deletes the file "notes.txt".
Use `rm -r <dirname>` to delete a directory and its contents recursively. For example, `rm -r projects/` deletes the "projects" directory and all its files.
Use `rmdir <dirname>` to delete an empty directory. For example, `rmdir empty_folder/` deletes the directory if it is empty.
be careful with this command, as this will perform a *hard delete*, meaning the files are not recoverable without specialized bitwise file recovery software.
---
### Editing Files
SDG-OS includes two terminal-based text editors:
- `micro`: A modern, user-friendly editor. Open a file with `micro <filename>`. For example, `micro notes.txt` opens notes.txt in Micro.
- Save with `Ctrl+S` and quit with `Ctrl+Q`.
micro is the default text editor used in SDG-OS scripts.
- `nano`: A simple, classic editor. Open a file with `nano <filename>`. For example, `nano notes.txt` opens "notes.txt" in Nano.
- Save with `Ctrl+O` and quit with `Ctrl+X`.
---
### Writing to Files
- `echo "text" > file.txt`: Overwrites the content of "file.txt" with the text "text", creating the file if it does not exist. For example, `echo "Hello, SDG-OS!" > greeting.txt` creates "greeting.txt" with the text "hello, SDG-OS!"
- `echo "text" >> file.txt`: Appends "text" to "file.txt", creating the file if it does not exist. For example, `echo "New line" >> greeting.txt` appends "New line" to the file.
- `tee`: Writes input to a file and displays it in the terminal at the same time. For example, `echo "Hello" | tee output.txt` writes "Hello" to `output.txt` and prints it to the terminal. this is primarily used to log the output of a command while still getting the output in the terminal.
@@ -0,0 +1,38 @@
> basic terminal utilities
Terminal utilities are essential for viewing, filtering, and manipulating text and files. Here are some of the most common utilities included in SDG-OS.
---
### Viewing File Contents
- `cat <filename>`: Displays the entire contents of a file. For example, `cat notes.txt` prints the contents of "notes.txt" to the terminal.
- `less <filename>`: Views a file interactively, allowing you to scroll with arrow keys and exit with *q*. For example, `less longfile.txt` lets you scroll through "longfile.txt".
- `head -n <num> <filename>`: Displays the first <num> lines of a file. For example, `head -n 10 notes.txt` shows the first 10 lines of "notes.txt".
- `tail -n <num> <filename>`: Displays the last <num> lines of a file. For example, `tail notes.txt` shows the last 10 lines of "notes.txt".
Use `tail -f <filename>` to follow updates to a file in real-time, which is useful for monitoring logs.
---
### Printing Text
- `echo "text"`: Prints text to the terminal. For example, `echo "Hello, SDG-OS!"` prints "Hello, SDG-OS!", you can also use this to input text to another command
---
### Counting Words and Lines
- `wc <filename>`: Counts lines, words, and characters in a file. For example, `wc notes.txt` outputs: "5 10 50 notes.txt", This means "notes.txt" has 5 lines, 10 words, and 50 characters.
- `wc -l <filename>`: Counts only lines. For example, `wc -l notes.txt` outputs the number of lines in "notes.txt".
---
### Sorting and Unique Lines
- `sort <filename>`: Sorts lines alphabetically. For example, `sort list.txt` sorts the lines in "list.txt".
- `uniq <filename>`: Removes duplicate lines from a sorted file. For example, `sort list.txt | uniq` sorts "list.txt" and removes duplicates.
### watching outputs
- `watch -n <num> <command>`: provides you with a live-updating display of the provided command, refreshing every <num> seconds, `watch -n 1 iostat` would give you the iostat output, updating every second.
@@ -0,0 +1,53 @@
> text modification and filtering
Filtering and modifying text is essential for working with files and command output. linux includes tools like `grep`, `sed`, `awk`, and `cut` for these tasks.
in this help article, all commands will show how to use them *with a file*, but instead of a filename, you can also use these in pipes (explained more in 205 terminal piping).
in which case you'd do `somecommand with --flags | grep "pattern"` for example.
you can also combine these. for example:
`somecommand with --flags | grep "pattern" | grep -v "blah"
this will output all the lines in the output of somecommand that DO have "pattern" and DO NOT have "blah".
or:
`somecommand with --flags | grep "pattern" | sed 's/pat/lec/' | awk '{print $1 " " $2 " " $3 }'`
this will take the output of somecommand, filter down to only lines with "pattern", replace the first occurence of "pat" with "lec" (changing pattern to lectern) and then outputs the first 3 words from the line.
---
### Searching Text with `grep`
- `grep "pattern" <filename>`: Searches for "pattern" in a file. For example, `grep "error" log.txt` prints all lines in 'log.txt' containing "error".
- `grep -i "pattern" <filename>`: Performs a case-insensitive search. For example, `grep -i "warning" log.txt` matches "Warning", "WARNING", etc.
- `grep -v "pattern" <filename>`: Excludes lines matching "pattern". For example, `grep -v "debug" log.txt` prints all lines except those containing "debug".
- `grep -r "pattern" <directory>`: Recursively searches for "pattern" in all files within a directory. For example, `grep -r "main" ~/projects/` searches for "main" in all files under 'projects/'.
---
### Modifying Text with `sed`
- `sed 's/old/new/' <filename>`: Replaces the first occurrence of "old" with "new" in each line. For example, `sed 's/hello/hi/' greeting.txt` replaces "hello" with "hi" in 'greeting.txt'. if you need to use slashes inside the text, you can use a different delimiter like "|": 's|old|new|g'
- `sed 's/old/new/g' <filename>`: Replaces all occurrences of "old" with "new" in each line. For example, `sed 's/hello/hi/g' greeting.txt` replaces every "hello" with "hi".
- `sed -i 's/old/new/g' <filename>`: Edits the file in-place, saving changes to the file. For example, `sed -i 's/hello/hi/g' greeting.txt` permanently replaces all occurrences.
---
### Extracting Columns with `cut`
- `cut -d',' -f1 <filename>`: Extracts the first field from a comma-delimited file. For example, `cut -d',' -f1 data.csv` prints the first column of `data.csv`. you can determine the delimiter yourself, using any single character. you can use the -f flag to print multiple fields (-f 1,3,5 or f1-5)
- `cut -c1-5 <filename>`: Extracts characters 1 through 5 from each line. For example, `cut -c1-5 notes.txt` prints the first 5 characters of each line in `notes.txt`.
---
### Processing Text with `awk`
- `awk '{print $1}' <filename>`: Prints the first field of each line (default delimiter is whitespace). For example, `awk '{print $1}' data.txt` prints the first column of 'data.txt'.
- `awk -F',' '{print $2}' <filename>`: Uses a comma as the field separator and prints the second field. For example, `awk -F',' '{print $2}' data.csv` prints the second column of 'data.csv'.
- `awk '/pattern/ {print $0}' <filename>`: Prints lines matching "pattern". For example, `awk '/error/ {print $0}' log.txt` prints all lines in 'log.txt' containing "error".
+64
View File
@@ -0,0 +1,64 @@
> terminal piping
Piping (`|`) and redirection (`>`, `>>`, `<`) allow you to chain commands together and control input/output. These are powerful tools for combining and manipulating data in the terminal.
---
### Piping with `|`, `||`, `&` and `&&`
- `command1 | command2`: Sends the output of `command1` as input to `command2`. For example, `ls | grep "txt"` lists all files in the current directory and filters for files containing "txt".
Another example: `cat log.txt | grep "error" | less` searches for "error" in `log.txt` and displays the results in `less`.
- `command1 && command2`: Runs `command2` only if `command1` succeeds (exits with status 0).
Example: `mkdir new_folder && cd new_folder` creates 'new_folder' and moves into it only if the directory is created successfully.
Example: `git commit -m "Update" && git push` pushes changes only if the commit succeeds.
- `command1 || command2`: Runs `command2` only if `command1` fails (exits with a non-zero status).
Example: `cat file.txt || echo "File not found"` prints the contents of 'file.txt' or displays "File not found" if the file doesnt exist.
Example: `ping -c 1 google.com || echo "Network unavailable"` checks connectivity and shows an error message if the ping fails.
- `command &`: Runs `command` in the background, allowing you to continue using the terminal. the command is still a child of the terminal and *will* exit when you close the terminal.
Example: `firefox &` opens Firefox in the background while keeping the terminal available for other commands.
Example: `cp -r ~/Documents/* ~/Backups/ &` will start a file copy to copy all files in 'Documents' to 'Backups', but sends it to the background so your terminal is not frozen until it is completed.
Example: `$(cp -r ~/Documents/* ~/backups/ && notify-send "copy complete!" || notify-send "copy failed!") &` will do the same as above, run a copy in the background, but once the command exits, it'll notify you of the success or failure.
---
### Redirection with `>` and `>>`
- `command > file.txt`: Redirects the output of `command` to 'file.txt', overwriting any existing content. For example, `echo "Hello" > greeting.txt` writes "Hello" to 'greeting.txt'.
- `command >> file.txt`: Appends the output of `command` to 'file.txt'. For example, `echo "World" >> greeting.txt` appends "World" to 'greeting.txt'.
- `command < file.txt`: Redirects the contents of 'file.txt' as input to `command`. For example, `grep "pattern" < input.txt` searches for "pattern" in 'input.txt'.
---
### Combining Pipes and Redirection
- Example: `ls -1 | grep ".txt" > textfiles.txt` lists all files, filters for '.txt' files, and saves the result to 'textfiles.txt'.
- Example: `cat access.log | grep "404" | wc -l > error_count.txt` counts 404 errors in 'access.log' and saves the count to 'error_count.txt'.
---
### Discarding Output with `/dev/null`
- `command > /dev/null`: Discards the output of `command`. For example, `ls > /dev/null` runs `ls` but suppresses its output.
- `command 2> /dev/null`: Discards error messages. For example, `ls /nonexistent 2> /dev/null` suppresses the error message for a non-existent directory.
---
### Using `tee` for Intermediate Output
- `command | tee file.txt`: Displays output in the terminal and saves it to 'file.txt'. For example, `ls | tee files.txt` lists files in the terminal and saves the list to 'files.txt'.
- `command | tee -a file.txt`: Appends output to 'file.txt' instead of overwriting. For example, `echo "New line" | tee -a notes.txt` appends "New line" to 'notes.txt'.
+68
View File
@@ -0,0 +1,68 @@
> file permissions
File permissions control who can read, write, or execute files and directories which can be managed with `chmod` and `chown`.
---
### Understanding Permissions
Permissions are displayed in `ls -l` output, for example:
`drwxr-xr-x 2 den users 4096 May 24 12:34 myfolder`
`-rw-r--r-- 1 den users 10 May 24 12:35 file.txt`
- The first character indicates the file type:
- `-`: Regular file.
- `d`: Directory.
- `l`: Symbolic link.
- The next 9 characters represent permissions for the **owner**, **group**, and **others** (in groups of 3):
- `r`: Read.
- `w`: Write.
- `x`: Execute.
- `-`: No permission.
For example, `rw-r--r--` means:
- Owner: read and write (`rw-`).
- Group: read only (`r--`).
- Others: read only (`r--`).
---
### Changing Permissions with `chmod`
- **Symbolic Mode**:
- `chmod u+x <file>`: Adds execute permission for the owner. For example, `chmod u+x script.sh` makes `script.sh` executable for the owner.
- `chmod g-w <file>`: Removes write permission for the group. For example, `chmod g-w file.txt` removes write access for the group.
- `chmod o=r <file>`: Sets read-only permission for others. For example, `chmod o=r file.txt` allows others to only read the file.
- `chmod a+r <file>`: Adds read permission for everyone (owner, group, others). For example, `chmod a+r file.txt` makes the file readable by everyone.
- **Numeric Mode**:
Permissions can also be set using numbers:
- `4`: Read (`r`).
- `2`: Write (`w`).
- `1`: Execute (`x`).
- `0`: No permission.
Example: `chmod 755 script.sh` sets:
- Owner: read, write, execute (`4+2+1 = 7`).
- Group: read, execute (`4+1 = 5`).
- Others: read, execute (`4+1 = 5`).
note: for a directory to be writeable, it *also* has to be executable, otherwise you cannot target it in commands. this is why you cannot CD into directories owned by root that do not have user execute permissions.
---
### Changing Ownership with `chown`
- `chown <owner> <file>`: Changes the owner of a file. For example, `chown den file.txt` changes the owner of 'file.txt' to the user 'den'.
- `chown <owner>:<group> <file>`: Changes the owner and group of a file. For example, `chown den:users file.txt` changes the owner to 'den' and the group to 'users'.
- `chown -R <owner> <directory>`: Recursively changes ownership of a directory and its contents. For example, `chown -R den projects/` changes the owner of 'projects/' and all its files to 'den'.
---
### Special Permissions
- Set User ID (SUID): `chmod u+s <file>`: Runs the file with the owner's permissions. For example, `chmod u+s script.sh` (use with caution).
- Set Group ID (SGID): `chmod g+s <file>`: Runs the file with the group's permissions. For example, `chmod g+s shared_folder` ensures new files in 'shared_folder' inherit the group.
- Sticky Bit: `chmod +t <directory>`: Only the owner can delete files in the directory. For example, `chmod +t /shared` prevents users from deleting each other's files in '/shared'.
---
### Default Permissions with `umask`
- `umask`: Views the current default permissions for new files and directories. For example, `umask` might output `0022`, which means new files are created with `644` permissions and directories with `755`.
- `umask <value>`: Sets the default permissions. For example, `umask 0002` sets the default so that new files are group-writable.
@@ -0,0 +1,91 @@
> additional useful terminal functions
Here are some additional terminal functions and tricks that can make your workflow more efficient.
---
### Process Management
- `ps`: Lists running processes. For example, `ps aux` shows all processes for all users. you can combine this with grep to get PIDs easily
- `kill <PID>`: Terminates a process by its ID. For example, `kill 1234` terminates the process with PID '1234'.
- `killall <name>`: Terminates a process by its name. For example, `killall firefox` closes all Firefox instances.
- `top` or `btop`: Monitors system resources interactively. For example, run `btop` for a detailed, interactive view of processes.
---
### Archiving and Compression
- `tar -cvf archive.tar <files>`: Creates a tar archive. For example, `tar -cvf backup.tar ~/documents/` creates 'backup.tar' from the 'documents' directory.
mnemonic: tar Compress Ze File
- `tar -xvf archive.tar`: Extracts a tar archive. For example, `tar -xvf backup.tar` extracts the contents of 'backup.tar'.
Mnemonic: tar eXtract Ze File
- `gzip <file>`: Compresses a file. For example, `gzip largefile.txt` compresses 'largefile.txt' to 'largefile.txt.gz'.
- `gunzip <file.gz>`: Decompresses a `.gz` file. For example, 'gunzip largefile.txt.gz' restores the original file.
---
### Networking
- `ping <host>`: Checks connectivity to a host. For example, `ping google.com` tests the connection to Google.
- `curl <URL>`: Downloads or interacts with a URL. For example, `curl https://example.com` retrieves the content of the webpage.
- `wget <URL>`: Downloads a file from a URL. For example, `wget https://example.com/file.zip` downloads 'file.zip'.
- `ssh <user>@<host>`: Connects to a remote machine. For example, `ssh den@192.168.1.100` attempts to connect over SSH to the remote machine at ip '192.168.1.100' as user 'den'.
---
### System Information
- `uname -a`: Displays system information. For example, `uname -a` shows the kernel version and system architecture.
- `df -h`: Displays disk space usage. For example, `df -h` shows disk usage in a human-readable format.
- `free -h`: Displays memory usage. For example, `free -h` shows RAM and swap usage in a human-readable format.
- `uptime`: Shows how long the system has been running. For example, `uptime` displays the system uptime and load averages.
---
### Terminal Shortcuts
- `Ctrl+C`: Interrupts the current command.
- `Ctrl+Z`: Suspends the current command (sends it to the background).
- `Ctrl+D`: Exits the current shell or sends EOF (End of File).
- `Ctrl+R`: Searches through command history.
- `!!`: Repeats the last command. For example, `sudo !!` repeats the last command with `sudo`.
- `Tab`: Auto-completes file or command names.
---
### Aliases
Create shortcuts for frequently used commands by adding aliases to your `.zshrc` file. For example:
alias ll='eza -l'
alias gs='git status'
After adding, run `source ~/.zshrc` to apply the changes.
the following aliasses exist by default:
find - replaces the default "find" command with a fzf menu that shows previews.
microfind - like find, but will open the selected file in micro
ls - replaces ls using eza, defaults to using list mode with colors, grouping and icons.
la - like ls, but lists all files
ll - lists in long format
lt - lists using tree format up to 4 layers deep
l. - lists only hidden files
update - runs `sudo pacman -Syu`
jctl - runs a minimal journalctl command
cmdhist - opens a menu to go through your command history and select one, then types that back into the terminal.
tipme - gets a random tip
cowtip - gets a random tip from an RGB cow
### fzf
you can use fzf inside your terminal by typing <**> and pressing <tab>. this will give you an fzf menu for autocompleting filepaths.
---
### Environment Variables
- `printenv`: Displays all environment variables. For example, `printenv` lists variables like `PATH` and `HOME`.
- `echo $VARIABLE`: Prints the value of a specific variable. For example, `echo $HOME` prints your home directory path.
- `export VARIABLE=value`: Sets an environment variable temporarily. For example, `export EDITOR=micro` sets `micro` as the default editor for the current session.
+42
View File
@@ -0,0 +1,42 @@
> Customizing DMS
this page will go over customizing DMS using the settings menu, because much of the settings menu is either self-explanatory or has good explanations, this document will serve only as a reference for the parts that are not immediately obvious.
you can open the settings from the bar or by pressing *super+s*
### personalization
the wallpaper settings can be modified using the wallpaper script (*super+w*), this will effectively change the set wallpaper. turning on per-mode or per-monitor wallpapers here will prevent the script from working properly.
for the color settings, generally, colors are listed by their application outside of the top section of theme and colors. all colors are decided from there.
auto uses matugen, different templates give different results for colors and it is recommended to play around with each.
matugen templates are used to apply the color scheme to other programs, DMS comes with a selection, and it is possible to add your own.
Currently, no additional matugen templates are provided, but the requirements for both GTK and QT theming are included.
all templates are enabled by default, so outside of the software that needs manual configuration (firefox, vesktop and vscode, which does work even if vscode itself is not detected because you're using another version of it, like code-oss), it should work by default.
you can find good instructions on how to handle these applications here: https://danklinux.com/docs/dankmaterialshell/application-themes
for vesktop, you'll need to enable the theme under the vencord theme settings and then *change your theme* (eg toggling light mode on and off) to make it update.
if GTK or QT applications (most native linux apps) are not being themed properly, you can click the button at the bottom of the themes and colors page.
### dank bar
SDG-OS comes with 4 pre-configured bars: a full top bar, a bottom bar, a top status bar and a side bar.
you can tweak these however you wish, to get different looks, you can check how these are configured.
## workspaces
these affect the workspaces/tags display in your top bar.
## keyboard shortcuts
these interact with your mango config, you can see all of the current binds, add new ones (Which are saved to ~/.config/mango/dms/binds.conf, including overwrites)
@@ -0,0 +1 @@
# WIP
@@ -0,0 +1 @@
# WIP
@@ -0,0 +1 @@
# WIP
@@ -0,0 +1 @@
# WIP
@@ -0,0 +1 @@
# WIP
+1
View File
@@ -0,0 +1 @@
# WIP
+1
View File
@@ -0,0 +1 @@
# WIP
+5
View File
@@ -20,6 +20,7 @@ case $LAYOUT in
;; ;;
G) G)
echo "Horizontal Grid" echo "Horizontal Grid"
mmsg dispatch toggle_render_border
mmsg dispatch togglegaps mmsg dispatch togglegaps
;; ;;
M) M)
@@ -47,7 +48,9 @@ case $LAYOUT in
;; ;;
VG) VG)
echo "Vertical Grid" echo "Vertical Grid"
mmsg dispatch toggle_render_border
mmsg dispatch togglegaps mmsg dispatch togglegaps
;; ;;
VK) VK)
echo "Vertical Deck" echo "Vertical Deck"
@@ -59,10 +62,12 @@ case $LAYOUT in
;; ;;
F) F)
echo "Fair" echo "Fair"
mmsg dispatch toggle_render_border
mmsg dispatch togglegaps mmsg dispatch togglegaps
;; ;;
VF) VF)
echo "Vertical Fair" echo "Vertical Fair"
mmsg dispatch toggle_render_border
mmsg dispatch togglegaps mmsg dispatch togglegaps
;; ;;
*) *)
+3
View File
@@ -0,0 +1,3 @@
#!/bin/bash
+3 -3
View File
@@ -5,7 +5,7 @@ alias microfind='micro $(pwd)/$(fzf --layout=reverse --preview="bat {}")'
alias ls='eza -al --color=always --group-directories-first --icons' # preferred listing alias ls='eza -al --color=always --group-directories-first --icons' # preferred listing
alias la='eza -a --color=always --group-directories-first --icons' # all files and dirs alias la='eza -a --color=always --group-directories-first --icons' # all files and dirs
alias ll='eza -l --color=always --group-directories-first --icons' # long format alias ll='eza -l --color=always --group-directories-first --icons' # long format
alias lt='eza -aT --color=always --group-directories-first --icons' # tree listing alias lt='eza -aT --level=4 --color=always --group-directories-first --icons' # tree listing
alias l.="eza -a | grep -e '^\.'" # show only dotfiles alias l.="eza -a | grep -e '^\.'" # show only dotfiles
alias ..='cd ..' alias ..='cd ..'
alias ...='cd ../..' alias ...='cd ../..'
@@ -22,9 +22,10 @@ alias gitpkg='pacman -Q | grep -i "\-git" | wc -l'
alias apt='man pacman' alias apt='man pacman'
alias apt-get='man pacman' alias apt-get='man pacman'
alias jctl="journalctl -p 3 -xb" alias jctl="journalctl -p 3 -xb"
alias cmdhist='CMD=$(history -i | fzf | sed "s/.*:..//"); sleep 0.1 && wtype $CMD' alias cmdhist='CMD=$(history -i | tac | fzf | sed "s/.*:.. //"); sleep 0.1 && wtype $CMD'
alias tipme='shuf -n 1 ~/.config/sdgos/tips/tips.list' alias tipme='shuf -n 1 ~/.config/sdgos/tips/tips.list'
alias alltips='cat ~/.config/sdgos/tips/tips.list | fzf' alias alltips='cat ~/.config/sdgos/tips/tips.list | fzf'
alias cowtip='cowsay -r $(shuf -n 1 ~/.config/sdgos/tips/tips.list) | lolcat'
## tools ## tools
alias pacgui=~/.config/sdgos/tuis/pkg-install.sh alias pacgui=~/.config/sdgos/tuis/pkg-install.sh
@@ -37,7 +38,6 @@ alias helptui=~/.config/sdgos/help/help.sh
export EDITOR=micro export EDITOR=micro
export IMAGEPROGRAM='satty --filename' export IMAGEPROGRAM='satty --filename'
export TIPS=$(cat ~/.config/sdgos/tips/tips.list)
export SHELL=/bin/zsh export SHELL=/bin/zsh
function plz() { function plz() {