From 37695f0b5b939a97adeda45f9ae2c9a198f2fb04 Mon Sep 17 00:00:00 2001 From: znqv Date: Tue, 9 Apr 2024 23:23:37 -0400 Subject: [PATCH] initial commit --- .byobu/.screenrc | 0 .byobu/.tmux.conf | 0 .byobu/.welcome-displayed | 0 .byobu/backend | 1 + .byobu/color | 3 + .byobu/color.tmux | 5 + .byobu/datetime.tmux | 2 + .byobu/keybindings | 1 + .byobu/keybindings.tmux | 4 + .byobu/profile | 1 + .byobu/profile.tmux | 1 + .byobu/prompt | 1 + .byobu/status | 37 ++++ .byobu/statusrc | 78 +++++++ .byobu/windows | 0 .byobu/windows.tmux | 0 .config/.bombadillo.ini | 19 ++ .config/amfora/config.toml | 403 +++++++++++++++++++++++++++++++++++++ .irssi/config | 327 ++++++++++++++++++++++++++++++ .irssi/default.theme | 295 +++++++++++++++++++++++++++ .plan | 2 + .profile | 41 ++++ .project | 1 + .vimrc | 7 + bin/lsbin | 4 + public_gemini/index.gmi | 26 +++ public_gemini/ruby.gmi | 31 +++ public_gemini/software.gmi | 68 +++++++ public_gemini/wiki.gmi | 13 ++ public_gopher/debug.dcgi | 31 +++ public_gopher/planet.dcgi | 77 +++++++ public_gopher/random.dcgi | 4 + 32 files changed, 1483 insertions(+) create mode 100644 .byobu/.screenrc create mode 100644 .byobu/.tmux.conf create mode 100644 .byobu/.welcome-displayed create mode 100644 .byobu/backend create mode 100644 .byobu/color create mode 100644 .byobu/color.tmux create mode 100644 .byobu/datetime.tmux create mode 100644 .byobu/keybindings create mode 100644 .byobu/keybindings.tmux create mode 100644 .byobu/profile create mode 100644 .byobu/profile.tmux create mode 100644 .byobu/prompt create mode 100644 .byobu/status create mode 100644 .byobu/statusrc create mode 100644 .byobu/windows create mode 100644 .byobu/windows.tmux create mode 100644 .config/.bombadillo.ini create mode 100644 .config/amfora/config.toml create mode 100644 .irssi/config create mode 100644 .irssi/default.theme create mode 100644 .plan create mode 100644 .profile create mode 100644 .project create mode 100644 .vimrc create mode 100755 bin/lsbin create mode 100644 public_gemini/index.gmi create mode 100644 public_gemini/ruby.gmi create mode 100644 public_gemini/software.gmi create mode 100644 public_gemini/wiki.gmi create mode 100755 public_gopher/debug.dcgi create mode 100755 public_gopher/planet.dcgi create mode 100755 public_gopher/random.dcgi diff --git a/.byobu/.screenrc b/.byobu/.screenrc new file mode 100644 index 0000000..e69de29 diff --git a/.byobu/.tmux.conf b/.byobu/.tmux.conf new file mode 100644 index 0000000..e69de29 diff --git a/.byobu/.welcome-displayed b/.byobu/.welcome-displayed new file mode 100644 index 0000000..e69de29 diff --git a/.byobu/backend b/.byobu/backend new file mode 100644 index 0000000..ac0eb76 --- /dev/null +++ b/.byobu/backend @@ -0,0 +1 @@ +BYOBU_BACKEND=tmux diff --git a/.byobu/color b/.byobu/color new file mode 100644 index 0000000..1ee73ad --- /dev/null +++ b/.byobu/color @@ -0,0 +1,3 @@ +BACKGROUND=k +FOREGROUND=w +MONOCHROME=0 \ No newline at end of file diff --git a/.byobu/color.tmux b/.byobu/color.tmux new file mode 100644 index 0000000..d7681a8 --- /dev/null +++ b/.byobu/color.tmux @@ -0,0 +1,5 @@ +BYOBU_DARK="\#ff87d7" +BYOBU_LIGHT="\#ff0087" +BYOBU_ACCENT=magenta +BYOBU_HIGHLIGHT=red +MONOCHROME= diff --git a/.byobu/datetime.tmux b/.byobu/datetime.tmux new file mode 100644 index 0000000..7b888a7 --- /dev/null +++ b/.byobu/datetime.tmux @@ -0,0 +1,2 @@ +BYOBU_DATE="%Y-%m-%d " +BYOBU_TIME="%H:%M:%S" diff --git a/.byobu/keybindings b/.byobu/keybindings new file mode 100644 index 0000000..9d9bbdb --- /dev/null +++ b/.byobu/keybindings @@ -0,0 +1 @@ +source $BYOBU_PREFIX/share/byobu/keybindings/common diff --git a/.byobu/keybindings.tmux b/.byobu/keybindings.tmux new file mode 100644 index 0000000..5136859 --- /dev/null +++ b/.byobu/keybindings.tmux @@ -0,0 +1,4 @@ +unbind-key -n C-a +set -g prefix ^A +set -g prefix2 ^A +bind a send-prefix diff --git a/.byobu/profile b/.byobu/profile new file mode 100644 index 0000000..230ac0e --- /dev/null +++ b/.byobu/profile @@ -0,0 +1 @@ +source $BYOBU_PREFIX/share/byobu/profiles/common diff --git a/.byobu/profile.tmux b/.byobu/profile.tmux new file mode 100644 index 0000000..9ccca51 --- /dev/null +++ b/.byobu/profile.tmux @@ -0,0 +1 @@ +source $BYOBU_PREFIX/share/byobu/profiles/tmux diff --git a/.byobu/prompt b/.byobu/prompt new file mode 100644 index 0000000..71325cd --- /dev/null +++ b/.byobu/prompt @@ -0,0 +1 @@ +[ -r /usr/pkg/share/byobu/profiles/bashrc ] && . /usr/pkg/share/byobu/profiles/bashrc #byobu-prompt# diff --git a/.byobu/status b/.byobu/status new file mode 100644 index 0000000..7b53521 --- /dev/null +++ b/.byobu/status @@ -0,0 +1,37 @@ +# status - Byobu's default status enabled/disabled settings +# +# Override these in $BYOBU_CONFIG_DIR/status +# where BYOBU_CONFIG_DIR is XDG_CONFIG_HOME if defined, +# and $HOME/.byobu otherwise. +# +# Copyright (C) 2009-2011 Canonical Ltd. +# +# Authors: Dustin Kirkland +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, version 3 of the License. +# +# 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Status beginning with '#' are disabled. + +# Screen has two status lines, with 4 quadrants for status +screen_upper_left="color" +screen_upper_right="color whoami hostname ip_address menu" +screen_lower_left="color logo #distro #release #arch session" +screen_lower_right="color network #disk_io custom #entropy raid reboot_required updates_available #apport #services #mail users uptime #ec2_cost #rcs_cost #fan_speed #cpu_temp battery wifi_quality #processes load_average cpu_count cpu_freq memory #swap disk #time_utc date time" + +# Tmux has one status line, with 2 halves for status +tmux_left="logo distro #release #arch #session" +# You can have as many tmux right lines below here, and cycle through them using Shift-F5 +tmux_right="#network #disk_io #custom #entropy #raid #reboot_required #updates_available #apport #services mail #users uptime #ec2_cost #rcs_cost #fan_speed #cpu_temp #battery #wifi_quality #processes load_average #cpu_count #cpu_freq memory #swap disk #whoami #hostname #ip_address #time_utc date time" +#tmux_right="network #disk_io #custom entropy raid reboot_required updates_available #apport #services #mail users uptime #ec2_cost #rcs_cost fan_speed cpu_temp battery wifi_quality #processes load_average cpu_count cpu_freq memory #swap #disk whoami hostname ip_address #time_utc date time" +#tmux_right="network #disk_io custom #entropy raid reboot_required updates_available #apport #services #mail users uptime #ec2_cost #rcs_cost #fan_speed #cpu_temp battery wifi_quality #processes load_average cpu_count cpu_freq memory #swap #disk #whoami #hostname ip_address #time_utc date time" +#tmux_right="#network disk_io #custom entropy #raid #reboot_required #updates_available #apport #services #mail #users #uptime #ec2_cost #rcs_cost fan_speed cpu_temp #battery #wifi_quality #processes #load_average #cpu_count #cpu_freq #memory #swap whoami hostname ip_address #time_utc disk date time" diff --git a/.byobu/statusrc b/.byobu/statusrc new file mode 100644 index 0000000..916c41e --- /dev/null +++ b/.byobu/statusrc @@ -0,0 +1,78 @@ +# statusrc - Byobu's default status configurations +# +# Override these in $BYOBU_CONFIG_DIR/statusrc +# where BYOBU_CONFIG_DIR is XDG_CONFIG_HOME if defined, +# and $HOME/.byobu otherwise. +# +# Copyright (C) 2009-2011 Canonical Ltd. +# +# Authors: Dustin Kirkland +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, version 3 of the License. +# +# 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Configurations that you can override; if you leave these commented out, +# Byobu will try to auto-detect them. + +# This should be auto-detected for most distro, but setting it here will save +# some call to lsb_release and the like. +#BYOBU_DISTRO=Tilde Pink + +# Default: depends on the distro (which is either auto-detected, either set +# via $DISTRO) +LOGO="$(color colour198 colour255)[~]$(color -)$(color colour212 colour212) $(color -)" + +# Abbreviate the release to N characters +# By default, this is disabled. But if you set RELEASE_ABBREVIATED=1 +# and your lsb_release is "precise", only "p" will be displayed +#RELEASE_ABBREVIATED=1 + +# Default: / +#MONITORED_DISK=/ + +# Minimum disk throughput that triggers the notification (in kB/s) +# Default: 50 +#DISK_IO_THRESHOLD=50 + +# Default: eth0 +#MONITORED_NETWORK=eth0 + +# Unit used for network throughput (either bits per second or bytes per second) +# Default: bits +#NETWORK_UNITS=bytes + +# Minimum network throughput that triggers the notification (in kbit/s) +# Default: 20 +#NETWORK_THRESHOLD=20 + +# You can add an additional source of temperature here +#MONITORED_TEMP=/proc/acpi/thermal_zone/THM0/temperature + +# Default: C +#TEMP=F + +#SERVICES="eucalyptus-nc|NC eucalyptus-cloud|CLC eucalyptus-walrus eucalyptus-cc|CC eucalyptus-sc|SC" + +#FAN=$(find /sys -type f -name fan1_input | head -n1) + +# You can set this to 1 to report your external/public ip address +# Default: 0 +#IP_EXTERNAL=0 + +# The users notification normally counts ssh sessions; set this configuration to '1' +# to instead count number of distinct users logged onto the system +# Default: 0 +#USERS_DISTINCT=0 + +# Set this to zero to hide seconds int the time display +# Default 1 +#TIME_SECONDS=0 diff --git a/.byobu/windows b/.byobu/windows new file mode 100644 index 0000000..e69de29 diff --git a/.byobu/windows.tmux b/.byobu/windows.tmux new file mode 100644 index 0000000..e69de29 diff --git a/.config/.bombadillo.ini b/.config/.bombadillo.ini new file mode 100644 index 0000000..877e60b --- /dev/null +++ b/.config/.bombadillo.ini @@ -0,0 +1,19 @@ + +[SETTINGS] +geminiblocks=block +homeurl=gopher://bombadillo.colorfield.space:70/1/user-guide.map +timeout=15 +webmode=w3m +maxwidth=100 +configlocation=/home/znqv/.config +savelocation=/home/znqv +defaultscheme=gopher +searchengine=gopher://gopher.floodgap.com:70/7/v2/vs +showimages=true +telnetcommand=telnet +theme=normal +[CERTS] +gemi.dev=E2:6F:42:52:FE:E9:9D:DF:4D:2D:A6:EB:C6:28:D0:FE:A1:56:CE:C7|1955129388 +kennedy.gemi.dev=74:5F:15:FF:E8:17:AA:3E:B0:8E:31:31:B8:E7:61:E6:BD:94:A7:DF|1963749213 +tilde.pink=12:AA:AF:F6:40:F5:C9:13:C3:E9:EA:5E:0F:31:D8:27:7E:C8:AD:D2|1928159953 +yasendfile.org=7A:17:7E:16:C4:8D:8D:1F:88:70:25:F5:AD:C0:52:3A:02:0E:F5:0E|1716015165 diff --git a/.config/amfora/config.toml b/.config/amfora/config.toml new file mode 100644 index 0000000..3369b92 --- /dev/null +++ b/.config/amfora/config.toml @@ -0,0 +1,403 @@ +# This is the default config file. +# It also shows all the default values, if you don't create the file. +# You can edit this file to set your own configuration for Amfora. + +# When Amfora updates, defaults may change, but this file on your drive will not. +# You can always get the latest defaults on GitHub. +# https://github.com/makeworld-the-better-one/amfora/blob/master/default-config.toml + +# Please also check out the Amfora Wiki for more help +# https://github.com/makeworld-the-better-one/amfora/wiki +# gemini://makeworld.space/amfora-wiki/ + + + +# All URL values may omit the scheme and/or port, as well as the beginning double slash +# Valid URL examples: +# gemini://example.com +# //example.com +# example.com +# example.com:123 + + +[a-general] +# Press Ctrl-H to access it +home = "gemini://gemini.circumlunar.space" + +# Follow up to 5 Gemini redirects without prompting. +# A prompt is always shown after the 5th redirect and for redirects to protocols other than Gemini. +# If set to false, a prompt will be shown before following redirects. +auto_redirect = false + +# What command to run to open a HTTP(S) URL. +# Set to "default" to try to guess the browser, or set to "off" to not open HTTP(S) URLs. +# If a command is set, than the URL will be added (in quotes) to the end of the command. +# A space will be prepended to the URL. +# +# The best way to define a command is using a string array. +# Examples: +# http = ['firefox'] +# http = ['custom-browser', '--flag', '--option=2'] +# http = ['/path/with spaces/in it/firefox'] +# +# Note the use of single quotes, so that backslashes will not be escaped. +# Using just a string will also work, but it is deprecated, and will degrade if +# you use paths with spaces. + +http = 'default' + +# Any URL that will accept a query string can be put here +search = "gemini://geminispace.info/search" + +# Whether colors will be used in the terminal +color = true + +# Whether ANSI color codes from the page content should be rendered +ansi = true + +# Whether to replace list asterisks with unicode bullets +bullets = true + +# Whether to show link after link text +show_link = false + +# A number from 0 to 1, indicating what percentage of the terminal width the left margin should take up. +left_margin = 0.15 + +# The max number of columns to wrap a page's text to. Preformatted blocks are not wrapped. +max_width = 100 + +# 'downloads' is the path to a downloads folder. +# An empty value means the code will find the default downloads folder for your system. +# If the path does not exist it will be created. +# Note the use of single quotes, so that backslashes will not be escaped. +downloads = '' + +# Max size for displayable content in bytes - after that size a download window pops up +page_max_size = 2097152 # 2 MiB +# Max time it takes to load a page in seconds - after that a download window pops up +page_max_time = 10 + +# When a scrollbar appears. "never", "auto", and "always" are the only valid values. +# "auto" means the scrollbar only appears when the page is longer than the window. +scrollbar = "auto" + +# Underline non-gemini URLs +# This is done to help color blind users +underline = true + + +[auth] +# Authentication settings +# Note the use of single quotes for values, so that backslashes will not be escaped. + +[auth.certs] +# Client certificates +# Set domain name equal to path to client cert +# "example.com" = 'mycert.crt' + +[auth.keys] +# Client certificate keys +# Set domain name equal to path to key for the client cert above +# "example.com" = 'mycert.key' + + +[keybindings] +# If you have a non-US keyboard, use bind_tab1 through bind_tab0 to +# setup the shift-number bindings: Eg, for US keyboards (the default): +# bind_tab1 = "!" +# bind_tab2 = "@" +# bind_tab3 = "#" +# bind_tab4 = "$" +# bind_tab5 = "%" +# bind_tab6 = "^" +# bind_tab7 = "&" +# bind_tab8 = "*" +# bind_tab9 = "(" +# bind_tab0 = ")" + +# Whitespace is not allowed in any of the keybindings! Use 'Space' and 'Tab' to bind to those keys. +# Multiple keys can be bound to one command, just use a TOML array. +# To add the Alt modifier, the binding must start with Alt-, should be reasonably universal +# Ctrl- won't work on all keys, see this for a list: +# https://github.com/gdamore/tcell/blob/cb1e5d6fa606/key.go#L83 + +# An example of a TOML array for multiple keys being bound to one command is the default +# binding for reload: +# bind_reload = ["R","Ctrl-R"] +# One thing to note here is that "R" is capitalization sensitive, so it means shift-r. +# "Ctrl-R" means both ctrl-r and ctrl-shift-R (this is a quirk of what ctrl-r means on +# an ANSI terminal) + +# The default binding for opening the bottom bar for entering a URL or link number is: +# bind_bottom = "Space" +# This is how to get the Spacebar as a keybinding, if you try to use " ", it won't work. +# And, finally, an example of a simple, unmodified character is: +# bind_edit = "e" +# This binds the "e" key to the command to edit the current URL. + +# The bind_link[1-90] options are for the commands to go to the first 10 links on a page, +# typically these are bound to the number keys: +# bind_link1 = "1" +# bind_link2 = "2" +# bind_link3 = "3" +# bind_link4 = "4" +# bind_link5 = "5" +# bind_link6 = "6" +# bind_link7 = "7" +# bind_link8 = "8" +# bind_link9 = "9" +# bind_link0 = "0" + +# All keybindings: +# +# bind_bottom +# bind_edit +# bind_home +# bind_bookmarks +# bind_add_bookmark +# bind_save +# bind_reload +# bind_back +# bind_forward +# bind_moveup +# bind_movedown +# bind_moveleft +# bind_moveright +# bind_pgup +# bind_pgdn +# bind_new_tab +# bind_close_tab +# bind_next_tab +# bind_prev_tab +# bind_quit +# bind_help +# bind_sub: for viewing the subscriptions page +# bind_add_sub +# bind_copy_page_url +# bind_copy_target_url +# bind_beginning: moving to beginning of page (top left) +# bind_end: same but the for the end (bottom left) + +[url-handlers] +# Allows setting the commands to run for various URL schemes. +# E.g. to open FTP URLs with FileZilla set the following key: +# ftp = ['filezilla'] +# You can set any scheme to 'off' or '' to disable handling it, or +# just leave the key unset. +# +# DO NOT use this for setting the HTTP command. +# Use the http setting in the "a-general" section above. +# +# NOTE: These settings are overrided by the ones in the proxies section. +# +# The best way to define a command is using a string array. +# Examples: +# magnet = ['transmission'] +# foo = ['custom-browser', '--flag', '--option=2'] +# tel = ['/path/with spaces/in it/telephone'] +# +# Note the use of single quotes, so that backslashes will not be escaped. +# Using just a string will also work, but it is deprecated, and will degrade if +# you use paths with spaces. + +# This is a special key that defines the handler for all URL schemes for which +# no handler is defined. +# It uses the special value 'default', which will try and use the default +# application on your computer for opening this kind of URI. +other = 'default' + + +# [[mediatype-handlers]] section +# --------------------------------- +# +# Specify what applications will open certain media types. +# By default your default application will be used to open the file when you select "Open". +# You only need to configure this section if you want to override your default application, +# or do special things like streaming. +# +# Note the use of single quotes for commands, so that backslashes will not be escaped. +# +# +# To open jpeg files with the feh command: +# +# [[mediatype-handlers]] +# cmd = ['feh'] +# types = ["image/jpeg"] +# +# Each command that you specify must come under its own [[mediatype-handlers]]. You may +# specify as many [[mediatype-handlers]] as you want to setup multiple commands. +# +# If the subtype is omitted then the specified command will be used for the +# entire type: +# +# [[mediatype-handlers]] +# command = ['vlc', '--flag'] +# types = ["audio", "video"] +# +# A catch-all handler can by specified with "*". +# Note that there are already catch-all handlers in place for all OSes, +# that open the file using your default application. This is only if you +# want to override that. +# +# [[mediatype-handlers]] +# cmd = ['some-command'] +# types = [ +# "application/pdf", +# "*", +# ] +# +# You can also choose to stream the data instead of downloading it all before +# opening it. This is especially useful for large video or audio files, as +# well as radio streams, which will never complete. You can do this like so: +# +# [[mediatype-handlers]] +# cmd = ['vlc', '-'] +# types = ["audio", "video"] +# stream = true +# +# This uses vlc to stream all video and audio content. +# By default stream is set to off for all handlers +# +# +# If you want to always open a type in its viewer without the download or open +# prompt appearing, you can add no_prompt = true +# +# [[mediatype-handlers]] +# cmd = ['feh'] +# types = ["image"] +# no_prompt = true +# +# Note: Multiple handlers cannot be defined for the same full media type, but +# still there needs to be an order for which handlers are used. The following +# order applies regardless of the order written in the config: +# +# 1. Full media type: "image/jpeg" +# 2. Just type: "image" +# 3. Catch-all: "*" + + +[cache] +# Options for page cache - which is only for text pages +# Increase the cache size to speed up browsing at the expense of memory +# Zero values mean there is no limit + +max_size = 0 # Size in bytes +max_pages = 30 # The maximum number of pages the cache will store + +# How long a page will stay in cache, in seconds. +timeout = 1800 # 30 mins + +[proxies] +# Allows setting a Gemini proxy for different schemes. +# The settings are similar to the url-handlers section above. +# E.g. to open a gopher page by connecting to a Gemini proxy server: +# gopher = "example.com:123" +# +# Port 1965 is assumed if no port is specified. +# +# NOTE: These settings override any external handlers specified in +# the url-handlers section. +# +# Note that HTTP and HTTPS are treated as separate protocols here. + + +[subscriptions] +# For tracking feeds and pages + +# Whether a pop-up appears when viewing a potential feed +popup = true + +# How often to check for updates to subscriptions in the background, in seconds. +# Set it to 0 to disable this feature. You can still update individual feeds +# manually, or restart the browser. +# +# Note Amfora will check for updates on browser start no matter what this setting is. +update_interval = 1800 # 30 mins + +# How many subscriptions can be checked at the same time when updating. +# If you have many subscriptions you may want to increase this for faster +# update times. Any value below 1 will be corrected to 1. +workers = 3 + +# The number of subscription updates displayed per page. +entries_per_page = 20 + + +[theme] +# This section is for changing the COLORS used in Amfora. +# These colors only apply if 'color' is enabled above. +# Colors can be set using a W3C color name, or a hex value such as "#ffffff". +# Setting a background to "default" keeps the terminal default +# If your terminal has transparency, set any background to "default" to keep it transparent +# The key "bg" is already set to "default", but this can be used on other backgrounds, +# like for modals. + +# Note that not all colors will work on terminals that do not have truecolor support. +# If you want to stick to the standard 16 or 256 colors, you can get +# a list of those here: https://jonasjacek.github.io/colors/ +# DO NOT use the names from that site, just the hex codes. + +# Definitions: +# bg = background +# fg = foreground +# dl = download +# btn = button +# hdg = heading +# bkmk = bookmark +# modal = a popup window/box in the middle of the screen + +# EXAMPLES: +# hdg_1 = "green" +# hdg_2 = "#5f0000" +# bg = "default" + +# Available keys to set: + +# bg: background for pages, tab row, app in general +# tab_num: The number/highlight of the tabs at the top +# tab_divider: The color of the divider character between tab numbers: | +# bottombar_label: The color of the prompt that appears when you press space +# bottombar_text: The color of the text you type +# bottombar_bg +# scrollbar: The scrollbar that appears on the right for long pages + +# hdg_1 +# hdg_2 +# hdg_3 +# amfora_link: A link that Amfora supports viewing. For now this is only gemini:// +# foreign_link: HTTP(S), Gopher, etc +# link_number: The silver number that appears to the left of a link +# regular_text: Normal gemini text, and plaintext documents +# quote_text +# preformatted_text +# list_text + +# btn_bg: The bg color for all modal buttons +# btn_text: The text color for all modal buttons + +# dl_choice_modal_bg +# dl_choice_modal_text +# dl_modal_bg +# dl_modal_text +# info_modal_bg +# info_modal_text +# error_modal_bg +# error_modal_text +# yesno_modal_bg +# yesno_modal_text +# tofu_modal_bg +# tofu_modal_text +# subscription_modal_bg +# subscription_modal_text + +# input_modal_bg +# input_modal_text +# input_modal_field_bg: The bg of the input field, where you type the text +# input_modal_field_text: The color of the text you type + +# bkmk_modal_bg +# bkmk_modal_text +# bkmk_modal_label +# bkmk_modal_field_bg +# bkmk_modal_field_text diff --git a/.irssi/config b/.irssi/config new file mode 100644 index 0000000..8249311 --- /dev/null +++ b/.irssi/config @@ -0,0 +1,327 @@ +servers = ( + { address = "irc.dal.net"; chatnet = "DALnet"; port = "6667"; }, + { + address = "ssl.efnet.org"; + chatnet = "EFNet"; + port = "9999"; + use_tls = "yes"; + }, + { + address = "irc.esper.net"; + chatnet = "EsperNet"; + port = "6697"; + use_tls = "yes"; + tls_verify = "yes"; + }, + { + address = "chat.freenode.net"; + chatnet = "Freenode"; + port = "6697"; + use_tls = "yes"; + tls_verify = "yes"; + }, + { + address = "irc.gamesurge.net"; + chatnet = "GameSurge"; + port = "6667"; + }, + { + address = "eu.irc6.net"; + chatnet = "IRCnet"; + port = "6667"; + use_tls = "yes"; + }, + { address = "open.ircnet.net"; chatnet = "IRCnet"; port = "6667"; }, + { + address = "irc.ircsource.net"; + chatnet = "IRCSource"; + port = "6667"; + }, + { address = "irc.netfuze.net"; chatnet = "NetFuze"; port = "6667"; }, + { + address = "irc.oftc.net"; + chatnet = "OFTC"; + port = "6697"; + use_tls = "yes"; + tls_verify = "yes"; + }, + { + address = "irc.quakenet.org"; + chatnet = "QuakeNet"; + port = "6667"; + }, + { + address = "irc.rizon.net"; + chatnet = "Rizon"; + port = "6697"; + use_tls = "yes"; + tls_verify = "yes"; + }, + { address = "silc.silcnet.org"; chatnet = "SILC"; port = "706"; }, + { + address = "irc.undernet.org"; + chatnet = "Undernet"; + port = "6667"; + }, + { + address = "irc.libera.chat"; + chatnet = "LiberaChat"; + port = "6697"; + use_tls = "yes"; + tls_verify = "yes"; + }, + { + address = "irc.tilde.chat"; + chatnet = "TildeChat"; + port = "6697"; + use_tls = "yes"; + tls_verify = "yes"; + autoconnect = "yes"; + } +); + +chatnets = { + DALnet = { + type = "IRC"; + max_kicks = "4"; + max_msgs = "20"; + max_whois = "30"; + }; + EFNet = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "4"; + max_whois = "1"; + }; + EsperNet = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "4"; + max_whois = "1"; + }; + Freenode = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "4"; + max_whois = "1"; + }; + GameSurge = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "1"; + max_whois = "1"; + }; + IRCnet = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "1"; + max_whois = "1"; + }; + IRCSource = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "4"; + max_whois = "1"; + }; + NetFuze = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "1"; + max_whois = "1"; + }; + OFTC = { type = "IRC"; max_kicks = "1"; max_msgs = "1"; max_whois = "1"; }; + QuakeNet = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "1"; + max_whois = "1"; + }; + Rizon = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "1"; + max_whois = "1"; + }; + SILC = { type = "SILC"; }; + Undernet = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "1"; + max_whois = "1"; + }; + LiberaChat = { type = "IRC"; }; + TildeChat = { type = "IRC"; }; +}; + +channels = ( + { name = "#lobby"; chatnet = "EsperNet"; autojoin = "No"; }, + { name = "#freenode"; chatnet = "Freenode"; autojoin = "No"; }, + { name = "#irssi"; chatnet = "Freenode"; autojoin = "No"; }, + { name = "#gamesurge"; chatnet = "GameSurge"; autojoin = "No"; }, + { name = "#irssi"; chatnet = "IRCNet"; autojoin = "No"; }, + { name = "#ircsource"; chatnet = "IRCSource"; autojoin = "No"; }, + { name = "#netfuze"; chatnet = "NetFuze"; autojoin = "No"; }, + { name = "#oftc"; chatnet = "OFTC"; autojoin = "No"; }, + { name = "silc"; chatnet = "SILC"; autojoin = "No"; } +); + +aliases = { + ATAG = "WINDOW SERVER"; + ADDALLCHANS = "SCRIPT EXEC foreach my \\$channel (Irssi::channels()) { Irssi::command(\"CHANNEL ADD -auto \\$channel->{visible_name} \\$channel->{server}->{tag} \\$channel->{key}\")\\;}"; + B = "BAN"; + BACK = "AWAY"; + BANS = "BAN"; + BYE = "QUIT"; + C = "CLEAR"; + CALC = "EXEC - if command -v bc >/dev/null 2>&1\\; then printf '%s=' '$*'\\; echo '$*' | bc -l\\; else echo bc was not found\\; fi"; + CHAT = "DCC CHAT"; + DATE = "TIME"; + DEHIGHLIGHT = "DEHILIGHT"; + DESCRIBE = "ACTION"; + DHL = "DEHILIGHT"; + EXEMPTLIST = "MODE $C +e"; + EXIT = "QUIT"; + GOTO = "SCROLLBACK GOTO"; + HIGHLIGHT = "HILIGHT"; + HL = "HILIGHT"; + HOST = "USERHOST"; + INVITELIST = "MODE $C +I"; + J = "JOIN"; + K = "KICK"; + KB = "KICKBAN"; + KN = "KNOCKOUT"; + LAST = "LASTLOG"; + LEAVE = "PART"; + M = "MSG"; + MUB = "UNBAN *"; + N = "NAMES"; + NMSG = "^MSG"; + P = "PART"; + Q = "QUERY"; + RESET = "SET -default"; + RUN = "SCRIPT LOAD"; + SAY = "MSG *"; + SB = "SCROLLBACK"; + SBAR = "STATUSBAR"; + SIGNOFF = "QUIT"; + SV = "MSG * Irssi $J ($V) - https://irssi.org"; + T = "TOPIC"; + UB = "UNBAN"; + UMODE = "MODE $N"; + UNSET = "SET -clear"; + W = "WHO"; + WC = "WINDOW CLOSE"; + WG = "WINDOW GOTO"; + WJOIN = "JOIN -window"; + WI = "WHOIS"; + WII = "WHOIS $0 $0"; + WL = "WINDOW LIST"; + WN = "WINDOW NEW HIDDEN"; + WQUERY = "QUERY -window"; + WW = "WHOWAS"; +}; + +statusbar = { + + items = { + + barstart = "{sbstart}"; + barend = "{sbend}"; + + topicbarstart = "{topicsbstart}"; + topicbarend = "{topicsbend}"; + + time = "{sb $Z}"; + user = "{sb {sbnickmode $cumode}$N{sbmode $usermode}{sbaway $A}}"; + + window = "{sb $winref:$tag/$itemname{sbmode $M}}"; + window_empty = "{sb $winref{sbservertag $tag}}"; + + prompt = "{prompt $[.15]itemname}"; + prompt_empty = "{prompt $winname}"; + + topic = " $topic"; + topic_empty = " Irssi v$J - https://irssi.org"; + + lag = "{sb Lag: $0-}"; + act = "{sb Act: $0-}"; + more = "-- more --"; + }; + + default = { + + window = { + + disabled = "no"; + type = "window"; + placement = "bottom"; + position = "1"; + visible = "active"; + + items = { + barstart = { priority = "100"; }; + time = { }; + user = { }; + window = { }; + window_empty = { }; + lag = { priority = "-1"; }; + act = { priority = "10"; }; + more = { priority = "-1"; alignment = "right"; }; + barend = { priority = "100"; alignment = "right"; }; + }; + }; + + window_inact = { + + type = "window"; + placement = "bottom"; + position = "1"; + visible = "inactive"; + + items = { + barstart = { priority = "100"; }; + window = { }; + window_empty = { }; + more = { priority = "-1"; alignment = "right"; }; + barend = { priority = "100"; alignment = "right"; }; + }; + }; + + prompt = { + + type = "root"; + placement = "bottom"; + position = "100"; + visible = "always"; + + items = { + prompt = { priority = "-1"; }; + prompt_empty = { priority = "-1"; }; + input = { priority = "10"; }; + }; + }; + + topic = { + + type = "root"; + placement = "top"; + position = "1"; + visible = "always"; + + items = { + topicbarstart = { priority = "100"; }; + topic = { }; + topic_empty = { }; + topicbarend = { priority = "100"; alignment = "right"; }; + }; + }; + }; +}; +settings = { + core = { + real_name = "Unknown"; + user_name = "znqv"; + nick = "znqv"; + recode_transliterate = "no"; + }; +}; diff --git a/.irssi/default.theme b/.irssi/default.theme new file mode 100644 index 0000000..79b1af5 --- /dev/null +++ b/.irssi/default.theme @@ -0,0 +1,295 @@ +# When testing changes, the easiest way to reload the theme is with /RELOAD. +# This reloads the configuration file too, so if you did any changes remember +# to /SAVE it first. Remember also that /SAVE overwrites the theme file with +# old data so keep backups :) + +# TEMPLATES: + +# The real text formats that irssi uses are the ones you can find with +# /FORMAT command. Back in the old days all the colors and texts were mixed +# up in those formats, and it was really hard to change the colors since you +# might have had to change them in tens of different places. So, then came +# this templating system. + +# Now the /FORMATs don't have any colors in them, and they also have very +# little other styling. Most of the stuff you need to change is in this +# theme file. If you can't change something here, you can always go back +# to change the /FORMATs directly, they're also saved in these .theme files. + +# So .. the templates. They're those {blahblah} parts you see all over the +# /FORMATs and here. Their usage is simply {name parameter1 parameter2}. +# When irssi sees this kind of text, it goes to find "name" from abstracts +# block below and sets "parameter1" into $0 and "parameter2" into $1 (you +# can have more parameters of course). Templates can have subtemplates. +# Here's a small example: +# /FORMAT format hello {colorify {underline world}} +# abstracts = { colorify = "%G$0-%n"; underline = "%U$0-%U"; } +# When irssi expands the templates in "format", the final string would be: +# hello %G%Uworld%U%n +# ie. underlined bright green "world" text. +# and why "$0-", why not "$0"? $0 would only mean the first parameter, +# $0- means all the parameters. With {underline hello world} you'd really +# want to underline both of the words, not just the hello (and world would +# actually be removed entirely). + +# COLORS: + +# You can find definitions for the color format codes in docs/formats.txt. + +# There's one difference here though. %n format. Normally it means the +# default color of the terminal (white mostly), but here it means the +# "reset color back to the one it was in higher template". For example +# if there was /FORMAT test %g{foo}bar, and foo = "%Y$0%n", irssi would +# print yellow "foo" (as set with %Y) but "bar" would be green, which was +# set at the beginning before the {foo} template. If there wasn't the %g +# at start, the normal behaviour of %n would occur. If you _really_ want +# to use the terminal's default color, use %N. + +############################################################################# + +# default foreground color (%N) - -1 is the "default terminal color" +default_color = "-1"; + +# print timestamp/servertag at the end of line, not at beginning +info_eol = "false"; + +# these characters are automatically replaced with specified color +# (dark grey by default) +replaces = { "[]=" = "%K$*%n"; }; + +abstracts = { + ## + ## generic + ## + + # text to insert at the beginning of each non-message line + line_start = "%B-%n!%B-%n "; + + # timestamp styling, nothing by default + timestamp = "$*"; + + # any kind of text that needs hilighting, default is to bold + hilight = "%_$*%_"; + + # any kind of error message, default is bright red + error = "%R$*%n"; + + # channel name is printed + channel = "%_$*%_"; + + # nick is printed + nick = "%_$*%_"; + + # nick host is printed + nickhost = "[$*]"; + + # server name is printed + server = "%_$*%_"; + + # some kind of comment is printed + comment = "[$*]"; + + # reason for something is printed (part, quit, kick, ..) + reason = "{comment $*}"; + + # mode change is printed ([+o nick]) + mode = "{comment $*}"; + + ## + ## channel specific messages + ## + + # highlighted nick/host is printed (joins) + channick_hilight = "%C$*%n"; + chanhost_hilight = "{nickhost %c$*%n}"; + + # nick/host is printed (parts, quits, etc.) + channick = "%c$*%n"; + chanhost = "{nickhost $*}"; + + # highlighted channel name is printed + channelhilight = "%c$*%n"; + + # ban/ban exception/invite list mask is printed + ban = "%c$*%n"; + + ## + ## messages + ## + + # the basic styling of how to print message, $0 = nick mode, $1 = nick + msgnick = "%K<%n$0$1-%K>%n %|"; + + # message from you is printed. "ownnick" specifies the styling of the + # nick ($0 part in msgnick) and "ownmsgnick" specifies the styling of the + # whole line. + + # Example1: You want the message text to be green: + # ownmsgnick = "{msgnick $0 $1-}%g"; + # Example2.1: You want < and > chars to be yellow: + # ownmsgnick = "%Y{msgnick $0 $1-%Y}%n"; + # (you'll also have to remove <> from replaces list above) + # Example2.2: But you still want to keep <> grey for other messages: + # pubmsgnick = "%K{msgnick $0 $1-%K}%n"; + # pubmsgmenick = "%K{msgnick $0 $1-%K}%n"; + # pubmsghinick = "%K{msgnick $1 $0$2-%n%K}%n"; + # ownprivmsgnick = "%K{msgnick $*%K}%n"; + # privmsgnick = "%K{msgnick %R$*%K}%n"; + + # $0 = nick mode, $1 = nick + ownmsgnick = "{msgnick $0 $1-}"; + ownnick = "%_$*%n"; + + # public message in channel, $0 = nick mode, $1 = nick + pubmsgnick = "{msgnick $0 $1-}"; + pubnick = "%N$*%n"; + + # public message in channel meant for me, $0 = nick mode, $1 = nick + pubmsgmenick = "{msgnick $0 $1-}"; + menick = "%Y$*%n"; + + # public highlighted message in channel + # $0 = highlight color, $1 = nick mode, $2 = nick + pubmsghinick = "{msgnick $1 $0$2-%n}"; + + # channel name is printed with message + msgchannel = "%K:%c$*%n"; + + # private message, $0 = nick, $1 = host + privmsg = "[%R$0%K(%r$1-%K)%n] "; + + # private message from you, $0 = "msg", $1 = target nick + ownprivmsg = "[%r$0%K(%R$1-%K)%n] "; + + # own private message in query + ownprivmsgnick = "{msgnick $*}"; + ownprivnick = "%_$*%n"; + + # private message in query + privmsgnick = "{msgnick %R$*%n}"; + + ## + ## Actions (/ME stuff) + ## + + # used internally by this theme + action_core = "%_ * $*%n"; + + # generic one that's used by most actions + action = "{action_core $*} "; + + # own action, both private/public + ownaction = "{action $*}"; + + # own action with target, both private/public + ownaction_target = "{action_core $0}%K:%c$1%n "; + + # private action sent by others + pvtaction = "%_ (*) $*%n "; + pvtaction_query = "{action $*}"; + + # public action sent by others + pubaction = "{action $*}"; + + + ## + ## other IRC events + ## + + # whois + whois = "%# $[8]0 : $1-"; + + # notices + ownnotice = "[%r$0%K(%R$1-%K)]%n "; + notice = "%K-%M$*%K-%n "; + pubnotice_channel = "%K:%m$*"; + pvtnotice_host = "%K(%m$*%K)"; + servernotice = "%g!$*%n "; + + # CTCPs + ownctcp = "[%r$0%K(%R$1-%K)] "; + ctcp = "%g$*%n"; + + # wallops + wallop = "%_$*%n: "; + wallop_nick = "%n$*"; + wallop_action = "%_ * $*%n "; + + # netsplits + netsplit = "%R$*%n"; + netjoin = "%C$*%n"; + + # /names list + names_prefix = ""; + names_nick = "[%_$0%_$1-] "; + names_nick_op = "{names_nick $*}"; + names_nick_halfop = "{names_nick $*}"; + names_nick_voice = "{names_nick $*}"; + names_users = "[%g$*%n]"; + names_channel = "%G$*%n"; + + # DCC + dcc = "%g$*%n"; + dccfile = "%_$*%_"; + + # DCC chat, own msg/action + dccownmsg = "[%r$0%K($1-%K)%n] "; + dccownnick = "%R$*%n"; + dccownquerynick = "%_$*%n"; + dccownaction = "{action $*}"; + dccownaction_target = "{action_core $0}%K:%c$1%n "; + + # DCC chat, others + dccmsg = "[%G$1-%K(%g$0%K)%n] "; + dccquerynick = "%G$*%n"; + dccaction = "%_ (*dcc*) $*%n %|"; + + ## + ## statusbar + ## + + # default background for all statusbars. You can also give + # the default foreground color for statusbar items. + sb_background = "%4%w"; + window_border = "%4%w"; + + # default backround for "default" statusbar group + #sb_default_bg = "%4"; + # background for prompt / input line + sb_prompt_bg = "%n"; + # background for info statusbar + sb_info_bg = "%8"; + # background for topicbar (same default) + #sb_topic_bg = "%4"; + + # text at the beginning of statusbars. "sb" already puts a space there, + # so we don't use anything by default. + sbstart = ""; + # text at the end of statusbars. Use space so that it's never + # used for anything. + sbend = " "; + + topicsbstart = "{sbstart $*}"; + topicsbend = "{sbend $*}"; + + prompt = "[$*] "; + + sb = " %c[%n$*%c]%n"; + sbmode = "(%c+%n$*)"; + sbaway = " (%GzZzZ%n)"; + sbservertag = ":$0 (change with ^X)"; + sbnickmode = "$0"; + + # activity in statusbar + + # ',' separator + sb_act_sep = "%c$*"; + # normal text + sb_act_text = "%c$*"; + # public message + sb_act_msg = "%W$*"; + # hilight + sb_act_hilight = "%M$*"; + # hilight with specified color, $0 = color, $1 = text + sb_act_hilight_color = "$0$1-%n"; +}; diff --git a/.plan b/.plan new file mode 100644 index 0000000..7f1c3a3 --- /dev/null +++ b/.plan @@ -0,0 +1,2 @@ +tinker with geomyidae CGI in ruby +Pronouns: she/her diff --git a/.profile b/.profile new file mode 100644 index 0000000..1b96b87 --- /dev/null +++ b/.profile @@ -0,0 +1,41 @@ +# $NetBSD: dot.profile,v 1.10 2018/03/01 06:12:09 snj Exp $ +# +# This is the default .profile file. +# Users are expected to edit it to meet their own needs. +# +# The commands in this file are executed when an sh user first +# logs in. +# +# See sh(1) for details. +# + +# Set your editor. Default to explicitly setting vi, as otherwise some +# software will run ed and other software will fail. Can be set to +# emacs or nano or whatever other editor you may prefer, but of course +# those editors must be installed before you can use them. +export EDITOR=vim + +# vi settings: set show-match auto-indent always-redraw shift-width=4 +#export EXINIT="se sm ai redraw sw=4" + +# VISUAL sets the "visual" editor, i.e., vi rather than ed, which if +# set will be run by preference to $EDITOR by some software. It is +# mostly historical and usually does not need to be set. +#export VISUAL=${EDITOR} + +# Set the pager. This is used by, among other things, man(1) for +# showing man pages. The default is "more". Another reasonable choice +# (included with the system by default) is "less". +#export PAGER=less + +# Set your default printer, if desired. +#export PRINTER=change-this-to-a-printer + +# Set the search path for programs. +PATH=$HOME/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R7/bin:/usr/pkg/bin +PATH=${PATH}:/usr/pkg/sbin:/usr/games:/usr/local/bin:/usr/local/sbin +export PATH + +# Configure the shell to load .shrc at startup time. +# This will happen for every shell started, not just login shells. +export ENV=$HOME/.shrc diff --git a/.project b/.project new file mode 100644 index 0000000..9d64a51 --- /dev/null +++ b/.project @@ -0,0 +1 @@ +gemini://tilde.pink/~znqv/ diff --git a/.vimrc b/.vimrc new file mode 100644 index 0000000..7854278 --- /dev/null +++ b/.vimrc @@ -0,0 +1,7 @@ +unlet! skip_defaults_vim +source $VIMRUNTIME/defaults.vim + +set autoindent +set expandtab +set tabstop=2 +set shiftwidth=2 diff --git a/bin/lsbin b/bin/lsbin new file mode 100755 index 0000000..c7f2980 --- /dev/null +++ b/bin/lsbin @@ -0,0 +1,4 @@ +#!/usr/bin/env ruby +puts Dir.glob('/{usr/,}{local/,pkg/}{s,}bin/*') + .concat(Dir.glob('/home/*/{.local/,}bin/*')) + .join("\n") diff --git a/public_gemini/index.gmi b/public_gemini/index.gmi new file mode 100644 index 0000000..e9851b4 --- /dev/null +++ b/public_gemini/index.gmi @@ -0,0 +1,26 @@ +# ~znqv in geminispace + +``` ascii banner that reads "znqv" +▒███████▒ ███▄ █ █████ ██▒ █▓ +▒ ▒ ▒ ▄▀░ ██ ▀█ █ ▒██▓ ██▒▓██░ █▒ +░ ▒ ▄▀▒░ ▓██ ▀█ ██▒▒██▒ ██░ ▓██ █▒░ + ▄▀▒ ░▓██▒ ▐▌██▒░██ █▀ ░ ▒██ █░░ +▒███████▒▒██░ ▓██░░▒███▒█▄ ▒▀█░ +░▒▒ ▓░▒░▒░ ▒░ ▒ ▒ ░░ ▒▒░ ▒ ░ ▐░ +░░▒ ▒ ░ ▒░ ░░ ░ ▒░ ░ ▒░ ░ ░ ░░ +░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░░ + ░ ░ ░ ░ ░ +░ ░ +``` + +=> wiki.gmi my tilde.pink wiki + +## projects +=> gopher://tilde.pink/1/~znqv/planet.dcgi planet pink +=> gopher://tilde.pink/1/~znqv/random.dcgi finger random tilde.pink user +=> gopher://tilde.pink/1/~znqv/debug.dcgi geomyidae CGI debug output + +## contact +=> mailto:znqv@tilde.pink email: znqv@tilde.pink +=> https://tiny.tilde.website/@znqv fediverse: @znqv@tiny.tilde.website +=> finger://tilde.pink/znqv finger: znqv@tilde.pink diff --git a/public_gemini/ruby.gmi b/public_gemini/ruby.gmi new file mode 100644 index 0000000..fe2c5ce --- /dev/null +++ b/public_gemini/ruby.gmi @@ -0,0 +1,31 @@ +# Ruby notes + +notes and resources for Ruby learnings + +=> https://ruby-doc.org/3.2.2/ Ruby 3.2.2 docs + +## why +* smol +* fun +* easier than writing bash/zsh/etc +* installed on tilde.pink :D + +## CGI and shell scripting +=> https://docs.ruby-lang.org/en/3.2/CGI.html +=> https://ruby-doc.org/3.2.2/stdlibs/fileutils/FileUtils.html +=> https://stackoverflow.com/questions/166347/how-do-i-use-ruby-for-shell-scripting +=> https://tomayko.com/blog/2011/awkward-ruby +=> https://gist.github.com/bradland/f216c923ae8d1aca1243 + +## one-liners +=> https://learnbyexample.github.io/learn_ruby_oneliners/ +=> https://ruby-doc.org/3.2.2/ARGF.html +=> http://web.archive.org/web/20060422190541/http://www.fepus.net/ruby1line.txt +=> https://learnbyexample.gitbooks.io/command-line-text-processing/content/ruby_one_liners.html +=> https://gist.github.com/melotusme/b6e1b95a2b26a93df3ecdc4e6dc6bf8d +=> https://github.com/JoshCheek/Play/blob/master/ruby-one-liners/Readme.md +=> http://blog.nicksieger.com/articles/2007/10/06/obscure-and-ugly-perlisms-in-ruby/ + +## golf +=> https://github.com/siman-man/ruby-golf-style-guide +=> https://codegolf.stackexchange.com/questions/363/tips-for-golfing-in-ruby diff --git a/public_gemini/software.gmi b/public_gemini/software.gmi new file mode 100644 index 0000000..be524e7 --- /dev/null +++ b/public_gemini/software.gmi @@ -0,0 +1,68 @@ +# software on tilde.pink + +## hosted services +* email (dovecot, postfix) +* finger +* gemini (gemserv) +* gopher (geomyidae) +* web (nginx) + +## net clients +* amfora +* asuka +* AV-98 +* bombadillo +* curl +* delv +* dig +* elinks +* felinks +* finger +* links +* lynx +* nc +* ncgopher +* nmap +* pinky (gpinky) +* telnet +* w3m +* wget + +## IRC clients +* catgirl +* irssi +* weechat + +## email programs +* alpine +* neomutt +* notmuch + +## shells +* bash +* csh +* fish +* ksh +* sh +* zsh + +## text editors +* ed +* joe +* nano +* neovim +* pico +* vi +* vim + +## programming languages +* c/c++ +* go +* guile +* java +* lua +* m4 +* perl +* php +* python +* ruby diff --git a/public_gemini/wiki.gmi b/public_gemini/wiki.gmi new file mode 100644 index 0000000..31477ad --- /dev/null +++ b/public_gemini/wiki.gmi @@ -0,0 +1,13 @@ +# my tilde.pink wiki + +🚧 this wiki is under construction 🚧 + +=> ./software.gmi software on tilde.pink +=> ./ruby.gmi Ruby notes + +## resources +=> https://www.netbsd.org/docs/ NetBSD documentation +=> gopher://gopher.libraryoferis.org/ the Great Library of Eris +=> https://gist.github.com/devhero/7b9a7281db0ac4ba683f byobu cheatsheet +=> https://irssi.org/documentation/ irssi documentation +=> https://bombadillo.colorfield.space/docs/ bombadillo user guide diff --git a/public_gopher/debug.dcgi b/public_gopher/debug.dcgi new file mode 100755 index 0000000..b94ee68 --- /dev/null +++ b/public_gopher/debug.dcgi @@ -0,0 +1,31 @@ +#!/usr/bin/env ruby +require 'cgi' +vars = [ + 'GATEWAY_INTERFACE', + 'PATH_INFO', + 'PATH_TRANSLATED', + 'QUERY_STRING', + 'SELECTOR', + 'REQUEST', + 'REMOTE_ADDR', + 'REMOTE_HOST', + 'REQUEST_METHOD', + 'SCRIPT_NAME', + 'SERVER_NAME', + 'SERVER_PORT', + 'SERVER_LISTEN_NAME', + 'SERVER_PROTOCOL', + 'SERVER_SOFTWARE', + 'X_GOPHER_SEARCH', + 'SEARCHREQUEST', + 'HTTPS', + 'GOPHERS', +] +search, arguments, host, port = ARGF.argv +params = CGI::parse search +print "search=#{search}\n"\ + "params=#{params}\n"\ + "arguments=#{arguments}\n"\ + "host=#{host}\n"\ + "port=#{port}\n"\ + "#{vars.map {|var| "#{var}=#{ENV[var]}\n"}.join}" diff --git a/public_gopher/planet.dcgi b/public_gopher/planet.dcgi new file mode 100755 index 0000000..d8b357f --- /dev/null +++ b/public_gopher/planet.dcgi @@ -0,0 +1,77 @@ +#!/usr/bin/env ruby +require 'cgi' + +PROTOCOLS = { + '.plan' => 'finger', + 'public_gemini' => 'gemini', + 'public_gopher' => 'gopher', + 'public_html' => 'https', +} + +search = ENV['X_GOPHER_SEARCH'] +params = search ? CGI.parse(search) : {} + +filters = { + :protocol => params['protocol'].to_a.empty? ? + PROTOCOLS.values : + params['protocol'], + :size => params['size'].to_a.empty? ? + 50 : + Integer(params['size'].first), +} + +results = Dir.glob('/home/*/{public_{gemini,gopher,html},.plan}') + .map{|f| { + filepath: f, + user: File.basename(File.dirname(f)), + mtime: File.mtime(f), + protocol: PROTOCOLS[File.basename(f)], + }} + .reject{|h| + if File.world_readable? h[:filepath] then + Dir.empty? h[:filepath] || Dir.glob(h[:filepath]).all?{|f| + f =~ /(\.sample|public_(gemini,gopher))$/ + } + else + true + end + } + .filter{|h| filters[:protocol].any?{|p| p == h[:protocol]}} + .sort_by{|h| h[:mtime]} + .reverse + .first(filters[:size]) + .map{|h| + user = h[:user] + protocol = h[:protocol] + date = h[:mtime].strftime '%Y-%m-%d' + + type = '1' + prefix = '/' + suffix = '' + + unless protocol.eql? 'gopher' then + type = 'h' + prefix.prepend "URL:#{protocol}://tilde.pink" + end + + unless protocol.eql? 'finger' then + prefix << '~' + suffix << '/' + end + + desc = "#{date} #{user} {#{protocol}}" + path = "#{prefix}#{user}#{suffix}" + + "[#{type}|#{desc}|#{path}|server|port]" + } + +print ''\ + "┏━┃┃ ┏━┃┏━ ┏━┛━┏┛ ┏━┃┛┏━ ┃ ┃\n"\ + "┏━┛┃ ┏━┃┃ ┃┏━┛ ┃ ┏━┛┃┃ ┃┏┛\n"\ + "┛ ━━┛┛ ┛┛ ┛━━┛ ┛ ┛ ┛┛ ┛┛ ┛\n"\ + "a tilde.pink aggregator █▉▊▋▌▍▎▏\n\n"\ + "showing #{results.length} results from #{filters[:protocol].join ', '}\n\n"\ + "[7|change search filters|/~znqv/planet.dcgi|server|port]\n"\ + "example: size=100&protocol=gemini&protocol=gopher\n"\ + "[1|clear search filters|/~znqv/planet.dcgi|server|port]\n\n"\ + "#{results.join "\n"}" diff --git a/public_gopher/random.dcgi b/public_gopher/random.dcgi new file mode 100755 index 0000000..1e8d306 --- /dev/null +++ b/public_gopher/random.dcgi @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +plan=$(ls /home/*/.plan | ruby -e 'puts STDIN.readlines.shuffle.first') +user=$(stat -f '%Su' "$plan") +finger "$user@tilde.pink" | sed 's/\t/\n/g'