From 600d10585d105e76ac6831f136e3dcbd97a211ba Mon Sep 17 00:00:00 2001 From: clemtre Date: Fri, 12 Jan 2024 20:16:43 +0100 Subject: [PATCH] init --- LICENSE | 277 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 120 +++++++++++++++++++++++ signet.sh | 80 ++++++++++++++++ 3 files changed, 477 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100755 signet.sh diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..32a8b2a --- /dev/null +++ b/LICENSE @@ -0,0 +1,277 @@ +Part of the Unbound Libraries Documentation + + CC4R* COLLECTIVE CONDITIONS FOR RE-USE + +COPYLEFT ATTITUDE WITH A DIFFERENCE - VERSION 1.0 + +------------------------------------------------------------------------ + +REMINDER TO CURRENT AND FUTURE AUTHORS: + +The authored work released under the CC4r was never yours to begin with. +The CC4r considers authorship to be part of a collective cultural effort +and rejects authorship as ownership derived from individual genius. This +means to recognize that it is situated in social and historical +conditions and that there may be reasons to refrain from release and +re-use. + +------------------------------------------------------------------------ + +PREAMBLE + +The CC4r articulates conditions for re-using authored materials. This +document is inspired by the principles of Free Culture – with a few +differences. You are invited to copy, distribute, and transform the +materials published under these conditions, and to take the implications +of (re-)use into account. +The CC4r understands authorship as inherently collaborative and +already-collective. It applies to hybrid practices such as human-machine +collaborations and other-than-human contributions. The legal framework +of copyright ties authorship firmly in property and individual human +creation, and prevents more fluid modes of authorial becoming from +flourishing. Free Culture and intersectional, feminist, anti-colonial +work reminds us that there is no tabula rasa, no original or single +author; that authorial practice exists within a web of references. +The CC4r favours re-use and generous access conditions. It considers +hands-on circulation as a necessary and generative activation of +current, historical and future authored materials. While you are free to +(re-)use them, you are not free from taking the implications from +(re-)use into account. +The CC4r troubles the binary approach that declares authored works +either ‘open’ or ‘closed’. It tries to address how a universalist +approach to openness such as the one that Free licenses maintain, has +historically meant the appropriation of marginalised knowledges. It is +concerned with the way Free Culture, Free Licenses and Open Access do +not account for the complexity and porosity of knowledge practices and +their circulation, nor for the power structures active around it. This +includes extractive use by software giants and commercial on-line +platforms that increasingly invest into and absorb Free Culture. +The CC4r asks CURRENT and FUTURE AUTHORS, as a collective, to care +together for the implications of appropriation. To be attentive to the +way re-use of materials might support or oppress others, even if this +will never be easy to gauge This implies to consider the collective +conditions of authorship. +The CC4r asks you to be courageous with the use of materials that are +being licensed under the CC4r. To discuss them, to doubt, to let go, to +change your mind, to experiment with them, to give back to them and to +take responsibility when things might go wrong. +Considering the Collective Conditions for (re-)use involves inclusive +crediting and speculative practices for referencing and resourcing. To +consider the circulation of materials on commercial platforms as +participating in extractive data practices; platform capitalism +appropriates and abuses collective authorial practice. To take into +account that the defaults of openness and transparency have different +consequences in different contexts. To consider the potential necessity +for opacity when accessing and transmitting knowledge, especially when +it involves materials that matter to marginalized communities. +This document was written in response to the Free Art License (FAL) in a +process of coming to terms with the colonial structuring of knowledge +production. It emerged out of concerns with the way Open Access and Free +Culture ideologies foregrounding openness and freedom as universal +principles might replicate some of the problems with conventional +copyright. + +DEFINITIONS + +« LEGAL AUTHOR » In the CC4r, LEGAL AUTHOR is used for the individual +that is assigned as “author” by conventional copyright. Even if the +authored work was never theirs to begin with, he or she is the only one +that is legally permitted to license a work under a CC4r. This license +is therefore not about liability, or legal implications. It cares about +the ways copyright contributes to structural inequalities. +« CURRENT AUTHOR » can be used for individuals and collectives. It is +the person, collective or other that was involved in generating the work +created under a CC4r license. CURRENT and FUTURE AUTHOR are used to +avoid designations that overly rely on concepts of ‘originality’ and +insist on linear orders of creation. +« FUTURE AUTHOR » can be used for individuals and collectives. They want +to use the work under CC4r license and are held to its conditions. All +future authors are considered coauthors, or anauthors. They are +anauthorized because this license provides them with an unauthorized +authorization. +« LICENSE » due to its conditional character, this document might +actually not qualify as a license. It is for sure not a Free Culture +License. see also: UNIVERSALIST OPENNESS. +« (RE-)USE » the CC4r opted for bracketing “RE” out of necessity to mess +up the time-space linearity of the original.« OPEN <-> CLOSED » the CC4r +operates like rotating doors… it is a swinging license, or a hinged +license. +« UNIVERSALIST OPENNESS » the CC4r tries to propose an alternative to +universalist openness. A coming to terms with the fact that universal +openness is “safe” only for some. + +0. CONDITIONS + +The invitation to (re-)use the work licenced under CC4r applies as long +as the FUTURE AUTHOR is convinced that this does not contribute to +oppressive arrangements of power, privilege and difference. These may be +reasons to refrain from release and re-use. +If it feels paralyzing to decide whether or not these conditions apply, +it might point at the need to find alternative ways to activate the +work. In case of doubt, consult for example +https://constantvzw.org/wefts/orientationspourcollaboration.en.html. + +1. OBJECT + +The aim of this license is to articulate collective conditions for +re-use. + +2. SCOPE + +The work licensed under the CC4r is reluctantly subject to copyright +law. By applying CC4r, the legal author extends its rights and invites +others to copy, distribute, and modify the work. + +2.1 INVITATION TO COPY (OR TO MAKE REPRODUCTIONS) + +When the conditions under 0. apply, you are invited to copy this work, +for whatever reason and with whatever technique. + +2.2 INVITATION TO DISTRIBUTE, TO PERFORM IN PUBLIC + +As long as the conditions under 0. apply, you are invited to distribute +copies of this work; modified or not, whatever the medium and the place, +with or without any charge, provided that you: + +- attach this license to each of the copies of this work or indicate + where the license can be found; +- make an effort to account for the collective conditions of the work, + for example what contributions were made to the modified work and by + whom, or how the work could continue; +- specify where to access other versions of the work. + +2.3 INVITATION TO MODIFY + +As long as the conditions under 0. apply, you are invited to make future +works based on the current work, provided that you: + +- observe all conditions in article 2.2 above, if you distribute + future works; +- indicate that the work has been modified and, if possible, what kind + of modifications have been made. +- distribute future works under the same license or any compatible + license. + +3. INCORPORATION OF THE WORK + +Incorporating this work into a larger work (i.e., database, anthology, +compendium, etc.) is possible. If as a result of its incorporation, the +work can no longer be accessed apart from its appearance within the +larger work, incorporation can only happen under the condition that the +larger work is as well subject to the CC4r or to a compatible license. + +4. COMPATIBILITY + +A license is compatible with the CC4r provided that: + +- it invites users to take the implications of their appropriation + into account; +- it invites to copy, distribute, and modify copies of the work + including for commercial purposes and without any other restrictions + tha + n those required by the other compatibility criteria; +- it ensures that the collective conditions under which the work was + authored are attributed unless not desirable, and access to previous + versions of the work is provided when possible; +- it recognizes the CC4r as compatible (reciprocity); +- it requires that changes made to the work will be subject to the + same license or to a license which also meets these compatibility + criteria. + +5. LEGAL FRAMEWORK + +Because of the conditions mentioned under 0., this is not a Free +License. It is reluctantly formulated within the framework of both the +Belgian law and the Berne Convention for the Protection of Literary and +Artistic Works. +“We recognize that private ownership over media, ideas, and technology +is rooted in European conceptions of property and the history of +colonialism from which they formed. These systems of privatization and +monopolization, namely copyright and patent law, enforce the systems of +punishment and reward which benefit a privileged minority at the cost of +others’ creative expression, political discourse, and cultural survival. +The private and public institutions, legal frameworks, and social values +which uphold these systems are inseparable from broader forms of +oppression. Indigenous people, people of color, queer people, trans +people, and women are particularly exploited for their creative and +cultural resources while hardly receiving any of the personal gains or +legal protections for their work. We also recognize that the public +domain has jointly functioned to compliment the private, as works in the +public domain may be appropriated for use in proprietary works. +Therefore, we use copyleft not only to circumvent the monopoly granted +by copyright, but also to protect against that appropriation.” +[Decolonial Media License] + +6. YOUR RESPONSIBILITIES + +The invitation to use the work as defined by the CC4r (invitation to +copy, distribute, modify) implies to take the implications of the +appropriation of the materials into account. + +7. DURATION OF THE LICENSE + +This license takes effect as of the moment that the FUTURE AUTHOR +accepts the invitation of the CURRENT AUTHOR. The act of copying, +distributing, or modifying the work constitutes a tacit agreement. This +license will remain in effect for the duration of the copyright which is +attached to the work. If you do not respect the terms of this license, +the invitation that it confers is void. If the legal status or +legislation to which you are subject makes it impossible for you to +respect the terms of this license, you may not make use of the rights +which it confers. + +8. VARIOUS VERSIONS OF THE LICENSE + +You are invited to reformulate this license by way of new, renamed +versions. Link to license on gitlab. You can of course make +reproductions and distribute this license verbatim (without any +changes). + +9. USER GUIDE + +– How to use the CC4r? + +To apply the CC4r, you need to mention the following elements: +[Name of the legal author, title, date of the work. When applicable, +names of authors of the common work and, if possible, where to find +other versions of the work]. +Copyleft with a difference: This is a collective work, you are invited +to copy, distribute, and modify it under the terms of the CC4r [link to +license]. +Short version: Legal author=name, date of work. CC4r [link to license] + +– Why use the CC4r? + +1. To remind yourself and others that you do not own authored works; +2. To not allow copyright to hinder works to evolve, to be extended, to + be transformed; +3. To allow materials to circulate as much as they need to; +4. Because the CC4r offers a legal framework to disallow + mis-appropriation by insisting on inclusive attribution. Nobody can + take hold of the work as one’s exclusive possession. + +– When to use the CC4r? + +Any time you want to invite others to copy, distribute and transform +authored works without exclusive appropriation but with considering the +implications of (re-)use, you can use the CC4r. You can for example +apply it to collective documentation, hybrid productions, artistic +collaborations or educational projects. + +– What kinds of works can be subject to the CC4r? + +The Collective Conditions for re-use can be applied to digital as well +as physical works.You can choose to apply the CC4r for any text, +picture, sound, gesture, or whatever material as long as you have legal +author’s rights. + +– Background of this license: + +The CC4r was developed for the Constant worksession Unbound libraries +(spring 2020) and followed from discussions during and contributions to +the study day Authors of the future (Fall 2019). It is based on the Free +Art License and inspired by other licensing projects such as the +(Cooperative) Non-Violent Public License and the Decolonial Media +license. Copyleft Attitude with a difference, 6 October 2020. Read more +about CC4r in: “Collectively Setting Conditions for Re-Use” (Elodie +Mugrefya & Femke Snelting, MARCH, spring 2022) diff --git a/README.md b/README.md new file mode 100644 index 0000000..eb30460 --- /dev/null +++ b/README.md @@ -0,0 +1,120 @@ +# Presentation +Signet.sh est un script shell qui transforme une base de donnée de liens +en une page html. La conversion est faite par une commande awk au sein +d'une déclaration here-doc qui est redirigé dans une page html. + +J'ai créé ce script car je trouve le gestionnaire de marque-page de +firefox instatsifant, autant dans sa forme que dans le format utilisé +(sqlite). Ce script et les utilitaires autours proposent une une +alternative pour archiver ses navigations internet. + +## Format de la base de donné +Seule une Url est requise, le reste des champs sont +facultatifs, on compte les champs suivants : +URL : +Name : Par défaut la balise de la page +Description +Tags : mots-clés séparés d'une virgule +Date : heure posix de l'ajout du lien +Color : couleur css (nom, hex, rgb etc...) + +Par exemple, dans un fichier qui s'appelle par défaut BOOKMARKS : +... +URL: https://rosettacode.org/wiki/Rosetta_Code +Name: Rosetta Code +Description: +Tags: literacy, read +Date: 1704675057 + +URL: https://www.emigre.com/TypeSpecimens +Name: Emigre: Type Specimens +Description: +Tags: emigre, type +Date: 1704680644 +Color: Purple + +URL: https://web.archive.org/web/20211025182257/http://len.falken.ink/ +Name: Wayback Machine +Description: +Tags: read +Date: 1704712747 +... + + +# Autres gestionnaires de signets de favoris : +- nb https://xwmx.github.io/nb/ (AGPL-3.0) +- ?? + + +# Dependances : +Pour ajouter un lien via l'interface proposée, on aura besoin +d'installer dmenu ~~et htmlq~~. + - dmenu https://tools.suckless.org/dmenu/ (MIT/X) + - ~~htmlq https://github.com/mgdm/htmlq (MIT)~~ remplacé par une + commande awk +## dmenu +Dmenu est un menu interactif qui permet de sélectionner et d'écrire des +valeurs dans un menu. Ces valeurs peuvent provenir d'un programme +fournit en entrée un *pipe* "|", par exemple : + ls | dmenu +affiche un menu déroulant avec les fichiers de mon répertoire. Dans +notre script, pour stocker le choix dans une variable, on peut faire : + tags=$(echo "" | dmenu -p "Enter comma-separated tags:") +## ~~htmlq~~ +Htmlq est un parseur d'html écrit en go. Peu importe quel parseur on +utilise, on dirait que chaque langage a le sien. +Il s'agit ici de fournir au programme une chaîne de caractère en entrée +et d'en filtrer des éléments html +Si en javascript pour récupérer tous les

enfants d'une
on +peut faire +document.querySelectorAll('section h1') +En shell, c'est plus compliqué, htmlq est fait pour ça : +cat fichier.html | htmlq 'section h1' +Et pour récurer seulement le texte -- l'équivalent en javascript de +.innerHTML : +cat fichier.html | htmlq 'section h1' --text +On s'en sert pour récupérer la balise titre de la page à ajouter : +curl page.html | htmlq 'title' --text +Patch pré-sortie : + + + +C'est quelque chose qu'il faudra changer, pour l'instant cette étape est +bloquante. Pour peu que la connection internet coupe lors de l'ajout +d'un lien, il faudra attendre la fin de la tentative de curl pour passer +au prochain champs du script :/ sorry ! + +# Usage : (faites les votre) +Pour ajouter un lien, je séléctionne l'url de la page avec Ctrl + l, la +copie et lance add.sh avec Super + i. _Si quelqu'un sait récupérer l'url +de la page courante du navigateur sans avoir à la copier, ça +économiserait deux étapes._ +En résumé : Ctrl + l, Ctrl + c, Super + i +(ou plus court : Ctrl + l + i, Super + i) + +Super + i car dans le fichier de configuration de mon gestionnaire de +fenêtre situé dans ~/.config/awesome/rc.lua j'ai les lignes suivantes : + +awful.key({modkey}, "i", function() +awful.util.spawn_with_shell("add.sh") end, +{description = "Enregistre le lien copié dans signet.sh"}), + +# Structure du répertoire + +BOOKMARKS → Une base de donnée de liens +add.sh → Un script pour rajouter un lien dans la base de donné + - dmenu + - ./signet.sh +signet.sh → Le script shell en lui-même + - Il génère une nouvelle page html à partir de la base + de donnés de liens (par défaut index.html) +style.css → La feuille de style pour styliser index.html +script.js → Un peu de javascript pour: + - rechercher dans la + - ajouter les couleurs de fond aux entrées qui en ont + - si le champs de description est vide, ne pas + l'afficher + - formater les dates du temps posix au format AA-MM-JJ +/!\ Prochainement /!\ +starred.sh → Un curl des repos de l'api github https://api.github.com/users/[user]/starred , formaté de json à une liste html sans jq ! + diff --git a/signet.sh b/signet.sh new file mode 100755 index 0000000..1400901 --- /dev/null +++ b/signet.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +DEST=index.html + +# I thought about using recutils db from GNU but went back to plain text +#DB=BOOKMARKS.rec +DB=BOOKMARKS + +cat <<- EOF > $DEST + + + + ⛵ → $(date "+%g-%m-%d, %H:%M") + + + + + + +
+ + +
    +$( +awk -v RS= '!/Tags: .*hide/ {print $0 "\n"}' $DB | \ +awk -v RS= ' +{ + if ($0 != "") { + split($0, lines, "\n") + color = "" + for (i in lines) { + split(lines[i], parts, ": ") + field = parts[1] + value = parts[2] + if (field == "Color") { + color = value + } + vals[i] = value + } + URL=vals[1] + NAME=vals[2] + DESC=vals[3] + TAGS=vals[4] + DATE=vals[5] + + print "
  1. " + print "" + + if (color != "") { + print "
    " + } + else { + print "
    " + } + + print "
    " URL "
    " \ + "

    " NAME "

    " \ + "

    " DESC "

    " \ + "

    " TAGS "

    " \ + "

    " DATE "

    " + + print "
    " + print "
    " + print "
  2. " + } +} ' +) +
+ + +EOF + +